
SSH를 통해 원격으로 소프트웨어 설치를 자동화할 수 있도록 컴퓨터를 구성해야 합니다. 수행원위키, 사용자가 비밀번호 없이 시스템에 액세스할 수 있도록 SSH 키를 설정할 수 있었지만 을 사용할 때 여전히 비밀번호를 수동으로 입력해야 하는데 sudo
, 분명히 자동화된 프로세스에서는 이를 수행할 필요가 없습니다.
/etc/ssh/sshd_config
가 있지만 루트 PermitRootLogin yes
로 로그인할 수 없는 것 같습니다. 아마도 별도의 비밀번호를 사용하는 "실제" 계정이 아니기 때문일 것입니다.
프로세스가 Ubuntu에서 루트로 원격으로 로그인할 수 있도록 SSH 키를 어떻게 구성합니까?
답변1
파트 1: 비밀번호가 없는 SSH 키
루트 사용자에 대해 비밀번호 없는 SSH 연결을 설정하려면 서버에 대한 루트 액세스 권한이 필요합니다. 가장 쉬운 방법은일시적으로루트가 비밀번호를 통해 SSH를 통해 로그인하도록 허용합니다. 어떤 식으로든 이 작업을 수행하려면 서버에 대한 루트 액세스가 필요합니다. 서버에 대한 루트 액세스 권한이 없으면 서버 관리자에게 도움을 요청하세요.
클라이언트에서 (Ssh FROM에서)
먼저 비밀번호 없이 SSH 키를 만드세요. 기본값을 사용하는 것보다 이름을 지정하는 것이 좋습니다.
ssh-keygen -f foo
-f 옵션은 파일 이름을 지정합니다. foo는 예입니다. 원하는 이름을 사용하세요.
비밀번호를 묻는 메시지가 표시되면 Enter 키를 누르기만 하면 비밀번호가 없는 키가 생성됩니다.
다음으로 키를 서버로 전송해야 합니다. 가장 쉬운 방법은 를 사용하는 것입니다 ssh-copy-id
. 이렇게 하려면 일시적으로 루트가 서버에 SSH로 연결되도록 허용해야 합니다.
서버에서 (ssh TO)
편집하다/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
다음 구문을 사용하여 루트가 로그인하도록 허용했는지 확인하십시오.
PasswordAuthentication yes
PermitRootLogin yes
서버를 다시 시작하세요
sudo service ssh restart
루트 비밀번호를 설정하고 강력한 비밀번호를 사용하세요
sudo passwd
클라이언트에서:
클라이언트에서 서버로 키 전송
ssh-copy-id -i ~/.ssh/foo root@server
키 이름을 "foo"로 변경하고 요청 시 서버 루트 비밀번호를 입력하세요.
키 테스트
ssh -i ~/.ssh/foo root@server
작동한다고 가정하면 루트 비밀번호를 설정 해제하고 비밀번호 로그인을 비활성화하세요.
서버에서:
sudo passwd -l root
편집하다/etc/ssh/sshd_config
sudo nano `/etc/ssh/sshd_config`
다음을 변경합니다.
PasswordAuthentication no
PermitRootLogin without-password
서버를 다시 시작하세요
sudo service ssh restart
클라이언트에서(테스트):
이제 비밀번호 없이 키를 사용하여 SSH에 접속할 수 있어야 하며, 키 없이는 어떤 사용자로도 SSH에 접속할 수 없어야 합니다.
ssh -i ~/.ssh/foo root@server
2부: 비밀번호를 입력하지 않고 sudo를 통해 명령 실행
비밀번호 없이 명령을 실행할 수 있도록 sudo를 구성합니다.
여기에는 두 곳에서 답변이 있습니다.
두 가지 중에서 모든 명령(두 번째 답변)보다는 가능한 한 적은 수의 명령(첫 번째 답변)을 허용하는 것이 좋습니다.
답변2
두 가지 다른 사항을 혼동하고 있습니다.
비밀번호 없는 로그는 사람들이 비밀번호를 추측하여 원격으로 시스템에 로그인할 수 없도록 하는 데 사용됩니다. username@machine을 통해 SSH로 접속하고 비밀번호 없이 연결할 수 있다면 이는 올바르게 설정된 것이며 이 외에는 아무 관련이 없습니다.
sudo
일반 사용자 계정이 슈퍼 사용자 권한으로 작업을 수행하도록 허용하는 데 사용됩니다. 이것하다사용자에게 비밀번호를 입력하도록 요구합니다. 이는 원격으로 연결되어 있거나(비밀번호가 없거나 비밀번호로 보호된 SSH를 통해) 시스템에 로컬로 연결되어 있는지 여부에 관계없이 발생합니다. 비밀번호를 묻지 않도록 설정하려고 하는데 sudo
이는 권장되지 않지만 다음과 같은 답변을 통해 설정 방법을 알아볼 수 있습니다.https://askubuntu.com/a/74083/6161
이 답변을 읽는 미래의 독자를 위한 참고 사항:
위의 답변은 원래 포스터의 실제 질문에 대한 답변이 아니며 귀하가 무엇을 설명하는지 설명합니다.~해야 한다대신하세요. 만약 너라면정말루트 계정에 직접 원격 연결을 허용하려면 루트 계정을 활성화해야 합니다(아래 설명 참조). 다시 말하지만하지 마라루트 계정에 대한 원격 원격 로그인을 허용합니다.
답변3
Q. 비밀번호 없는 SSH(예: ssh root@remotehost_ip)를 사용하여 루트 사용자로 원격 호스트에 로그인합니다.
A. 비밀번호 없는 SSH를 사용하여 루트 사용자로 원격 호스트에 로그인하려면 다음 단계를 따르십시오.
1단계:
먼저 로컬 사용자의 공개 키를 원격 호스트 루트 사용자의 Authorized_keys 파일과 공유해야 합니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 여기에 한 가지 예가 있습니다.
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2
또는 공개 키 내용을 원격 호스트 루트 사용자의 Authorized_keys 파일에 복사하여 붙여 넣을 수도 있습니다.
2단계:
원격 호스트에서 비밀번호 없는 로그인을 허용하도록 SSH를 구성합니다. 원격 호스트에 로그인하여 /etc/ssh/sshd_config 파일을 편집한 후 SSH 서비스를 다시 시작하세요. "PermitRootLogin yes"를 주석 처리하는 것을 잊지 마세요.
#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no
#service ssh restart
#PermitRootLogin 주석 처리 예
3단계:
이전에 공개 키를 공유한 사용자를 사용하여 로컬 컴퓨터에서 연결을 테스트합니다.
$ssh root@remotehost_ip
답변4
PermitRootLogin은 "root"라는 사용자(정확히 말하면 UID 0을 가진 모든 사용자)의 로그인이 허용되는지 여부를 제어합니다. 루트로 로그인하는 경우 권한 있는 작업을 수행할 필요가 없습니다 sudo
.
반면, 사용자 계정으로 로그인하고 sudo
비밀번호 없이 사용하려면 /etc/ssh/sshd_config
. 보다Ubuntu가 처음 비밀번호를 영원히 기억하게 만드는 방법