일반 텍스트 비밀번호를 매개변수로 사용하여 SSH 로그인을 하시겠습니까? [복사]

일반 텍스트 비밀번호를 매개변수로 사용하여 SSH 로그인을 하시겠습니까? [복사]

Ubuntu를 실행하는 원격 호스트에 생성된 사용자로 로그인해야 합니다. sshSSH 로그인은 내가 액세스할 수 없는 서버(Bamboo와 같은 지속적인 통합 서버를 생각해 보세요)에서 실행되는 bash 스크립트를 통해 이루어지기 때문에 키를 사용할 수 없습니다 .

ssh --passsword foobar user@host나는 이것이 이상적인 일이 아니라는 것을 알고 있지만 원격 호스트에서 비밀번호를 묻지 않도록 설정하거나 MySQL이 로그인을 허용하는 방식과 같은 유사한 것을 사용하여 로그인할 수 있도록 설정하고 싶습니다. .

나는 이 문제를 발견하지 못했고 man ssh이 문제에 대한 다른 해결책을 찾고 있습니다.

답변1

Ubuntu에서는 sshpass패키지를 설치하고 다음과 같이 사용합니다.

sshpass -p 'YourPassword' ssh user@host

sshpass파일이나 환경 변수에서 키보드 상호 작용 암호를 전달하는 기능도 지원되며, 이는 모든 보안 관련 상황에서 더 적절한 옵션이 될 수 있습니다. 바라보다man sshpass더 알아보기.

답변2

암호를 스크립트나 ssh명령줄 또는 일반 텍스트 파일에 입력하는 옵션이 있다면 다음과 같습니다.많은ssh대신 열쇠를 사용하는 것이 더 좋습니다 . 어느 쪽이든 ssh클라이언트 스크립트가 저장된 계정에 액세스할 수 있는 사람은 누구나 이를 사용하여 서버에 들어갈 수 있지만 적어도 OpenSSH가 올바르게 지원하는 키의 경우 ssh다음을 통해 액세스 권한을 부여할 수 없습니다. ssh, 필요한 경우 실행 취소하기가 더 쉽습니다.

SSH 키를 사용하지 말라는 요청을 받은 이유를 설명해야 합니다.

또한 클라이언트가 전체 셸을 사용하는 대신 서버에서 필요한 명령만 실행할 수 있도록 강제 명령( command="..."파일에서 )을 사용하는 것도 고려해 보세요..ssh/authorized_keys

답변3

첫째, 다른 응답자들과 마찬가지로 SSH 키만 사용하는 것이 좋습니다. 하지만 서버를 제어하는 ​​사람이 SSH 키 인증 사용을 전혀 허용하지 않을 것이라고 가정하고 비밀번호 인증을 사용해야 합니다.

ControlMaster 및 ControlPath를 사용할 수 있습니다.

A를 액세스할 수 없는 서버(Bamboo와 같은 지속적인 통합 서버라고 생각함)로 두고 C를 Ubuntu를 실행하는 원격 호스트로 둡니다.

이제 B가 당신이 제어하는 ​​컴퓨터라고 합시다. 적합한 B 컴퓨터를 제공할 수 없는 경우 이 답변은 작동하지 않습니다.

  1. 키 쌍을 생성하고 B의 Authorized_keys 파일에 공개 부분을 추가합니다. 개인키를 A에게 줍니다. 이제 비밀번호 없이 A에서 B에 로그인할 수 있습니다.
  2. B를 수동으로 열고 ssh -M -S /tmp/controlpath C메시지가 나타나면 비밀번호를 입력합니다. 그러면 비밀번호 없이 A에서 C로 로그인할 수 있습니다 ssh -S /tmp/controlpath C.

A의 스크립트에서는 ssh B ssh C dostuff.

B가 다시 시작될 때마다 연결을 다시 설정해야 합니다 ssh -M -S /tmp/controlpath C.

관련 정보