비밀번호를 입력하지 않고 SSH 구성

비밀번호를 입력하지 않고 SSH 구성

여기서의 목표는 ssh 10.0.200.9.switch -l customer내 노트북에서만 글을 쓰고 비밀번호를 입력하지 않고 로그인할 수 있도록 하는 것입니다.

  • 스위치는 로컬 LAN 내부에 있습니다 Laptop --> bastion.example.com --> 10.0.200.9.
  • 스위치는 SSH 키를 지원하지 않고 비밀번호만 지원합니다.
  • 내 노트북과 요새 서버 모두 OpenSSH 7.2p2를 실행하고 있습니다.
  • 비밀번호 프롬프트를 건너뛰려고 할 때 sshpass 1.05를 사용하고 있습니다. 다른 솔루션이 존재한다면, 저는 열려있습니다.

이것은 절반만 작동하는 것입니다.

/home/user/.ssh/config configuration 1

Host bastion
    hostname bastion.example.com
    port 2222
    user root
    identityfile /home/user/.ssh/id_rsa

Match host *.switch user customer
    ProxyCommand ssh bastion -W $(echo %h | grep -Po '^[0-9.]+[0-9]+' ):%p

잘 작동하지만 비밀번호가 필요합니다

user@laptop:~/.ssh$ ssh 10.0.200.9.switch -l customer
[email protected]'s password: 

Type 'help' or '?' to get help.
Switch# 

작동하고 비밀번호를 묻지 않지만 콘솔에 쓰는 데 시간이 더 오래 걸립니다.

user@laptop:~/.ssh$ export SSHPASS=secretPassWord
user@laptop:~/.ssh$ sshpass -e ssh 10.0.200.9.switch -l customer

Type 'help' or '?' to get help.
Switch

이것은 작동하지 않습니다:

/home/user/.ssh/config configuration 2

Host bastion
    hostname bastion.example.com
    port 2222
    user root
    identityfile /home/user/.ssh/id_rsa

Match host *.switch user customer
    ProxyCommand sshpass -e ssh bastion -W $(echo %h | grep -Po '^[0-9.]+[0-9]+' ):%p

변경사항은 .ssh/config file영향을 미치지 않습니다.

user@laptop:~/.ssh$ export SSHPASS=secretPassWord
user@laptop:~/.ssh$ ssh 10.0.200.9.switch -l customer
[email protected]'s password: 

답변1

귀하의 구성에서 ProxyCommand는 스위치에 대한 최종 연결을 위한 비밀번호가 아닌 sshpass연결될 SSH 연결을 위한 비밀번호를 제공하려고 시도하고 있는 것 같습니다 . bastion묶음sshpass 외부외부 sshProxyCommand가 작동하는 것 같습니다.

laptop$ export SSHPASS=sshhhh    
laptop$ sshpass -e ssh -o'Proxycommand ssh customer@bastion -W final.target.switch:22' blah@blah

sshpass이것은 SSH 클라이언트 가 자신의 비밀번호를 받아들이도록 속이기 위해 별도의 tty에 배치되기 때문에 sshpassSSH 클라이언트보다 먼저 실행되어야 하는 것 같습니다. 따라서 탈출이 작동하지 않을 ssh수 있습니다 .sshpassssh/config

그러나 원하는 옵션 sshpass으로 스크립트를 실행하는 것은 가능해야 합니다 . ssh이것은 당신이 한 것처럼 필요한 구성을 설정하여 저에게 효과적이었습니다 ~/.ssh/config.

#/bin/bash
if [ -z "$1" ] ; then echo "usage: $0 <args...>" ; exit 1 ; fi
sshpass -e ssh "$@"

사용자가 로그인하도록 설정할 수도 .ssh/config있으므로 필요하지 않을 수도 있습니다 . 또한 알 수 없는 호스트 키에 대한 요청을 잘 처리 -l하지 못하는 것 같으 므로 미리 설정(또는 사용)해야 할 수도 있습니다.sshpasssshknown_hostsStrictHostKeyChecking no

답변2

또 다른 방법은 퍼티 도구에서 plink를 사용하는 것입니다. 바라보다:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html "plink -pw ..."를 수행할 수 있는 것 외에도 원격 스크립팅에 "-m" 옵션을 사용할 수도 있습니다.

관련 정보