SSH를 통해 비대화식으로 연결(가능한 옵션)

SSH를 통해 비대화식으로 연결(가능한 옵션)

sshpass비대화형 방법(사용)을 사용하여 SSH를 통해 원격 서버에 연결하기 위한 일반 bash 스크립트를 만들려고 합니다 . 내가 알아야 할 것은 SSH를 통해 연결할 수 있는 방법입니다.

지금까지는 비밀번호와 키 파일(설정된 경우 비밀번호 포함)을 사용하여 연결할 수 있다는 것을 알고 있습니다.

  1. 비밀번호로 로그인

    sshpass -p {ssh-pass} ssh {ssh-user}@{ssh-host} -p {ssh-port}
    
  2. 키를 통해 로그인(비밀번호 필요 없음)

    ssh -i {ssh-key} {ssh-user}@{ssh-host} -p {ssh-port}
    
  3. 키를 통해 로그인(비밀번호 사용)

    sshpass -Ppassphrase -p {passphrase} ssh -i {ssh-key} {ssh-user}@{ssh-host} -p {ssh-port}
    
  4. ???

답변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:~$ 

(실제 지문은 위조된 것입니다.)

또한 원격 스크립트를 자동화하려는 경우 다음을 살펴보는 것을 권장하지 않습니다.안시푸르충분한.

관련 정보