sshpass
비대화형 방법(사용)을 사용하여 SSH를 통해 원격 서버에 연결하기 위한 일반 bash 스크립트를 만들려고 합니다 . 내가 알아야 할 것은 SSH를 통해 연결할 수 있는 방법입니다.
지금까지는 비밀번호와 키 파일(설정된 경우 비밀번호 포함)을 사용하여 연결할 수 있다는 것을 알고 있습니다.
비밀번호로 로그인
sshpass -p {ssh-pass} ssh {ssh-user}@{ssh-host} -p {ssh-port}
키를 통해 로그인(비밀번호 필요 없음)
ssh -i {ssh-key} {ssh-user}@{ssh-host} -p {ssh-port}
키를 통해 로그인(비밀번호 사용)
sshpass -Ppassphrase -p {passphrase} ssh -i {ssh-key} {ssh-user}@{ssh-host} -p {ssh-port}
???
답변1
축하합니다. 귀하는 보안에 관해 중요하면서도 때로는 고통스러운 교훈 중 하나를 배웠습니다.
자동화와 보안은 일관성이 없습니다.
스크립트에서 자동으로 실행하려면 사용자 측의 추가 상호 작용 없이 스크립트가 모든 자격 증명에 액세스할 수 있는지 확인해야 합니다. 하지만 이는 위의 자격 증명을 제공해야 함을 의미합니다.어떻게든, 이는 명령줄에 전달하는 것을 의미합니다(나쁜읽을 수 있는 사람은 누구나 예측할 수 있기 때문에 아이디어 ps
) 또는 스크립트 사용자만 읽을 수 있는 파일에 저장됩니다.
스케줄러를 통해 실행되고 비대화형 SSH가 필요한 자동화된 스크립트의 경우, 제가 선호하는 솔루션은 해당 목적으로만 사용될 비밀번호 없는 키를 생성하는 것입니다. 이를 통해 authorized_keys
클라이언트 측에서 파일을 수신하여 무엇을 제어할 수 있습니다. 그것은 할 수 있고 할 수 없습니다. 그런 다음 이 키는 스크립트를 실행하는 사용자만 읽을 수 있는 파일에 저장됩니다.
반면에, 이것이 수동으로 실행하려는 스크립트이고 비밀번호를 입력하라는 메시지가 표시되는 불편함을 원하지 않는 경우 원하는 것은 다음과 같습니다.SSH 키 에이전트.
GNOME 데스크탑 환경을 사용하는 경우 gnome-keyring이 SSH 키 브로커 역할을 할 수 있고 실제로 작동한다는 것을 알고 있으며 간단히 키를 읽을 수 있습니다. ssh-add
그러면 SSH 프로세스가 어디에서나 gnome 데스크탑을 시작할 수 있습니다. it 환경은 세션을 종료하거나 키링에서 키를 지울 때까지 에이전트에 연결하고 저장된 자격 증명을 사용할 수 있습니다.
shadur@luminosity:~$ ssh-add .ssh/id_ed25519
Enter passphrase for .ssh/id_ed25519:
Identity added: .ssh/id_ed25519 (Shadur - 2020)
shadur@luminosity:~$ ssh-add -l
256 SHA256:e3gvrdo**************FxJCtPo7DYN Shadur - 2020 (ED25519)
shadur@luminosity:~$
(실제 지문은 위조된 것입니다.)
또한 원격 스크립트를 자동화하려는 경우 다음을 살펴보는 것을 권장하지 않습니다.안시푸르충분한.