여기서의 목표는 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
외부외부 ssh
ProxyCommand가 작동하는 것 같습니다.
laptop$ export SSHPASS=sshhhh
laptop$ sshpass -e ssh -o'Proxycommand ssh customer@bastion -W final.target.switch:22' blah@blah
sshpass
이것은 SSH 클라이언트 가 자신의 비밀번호를 받아들이도록 속이기 위해 별도의 tty에 배치되기 때문에 sshpass
SSH 클라이언트보다 먼저 실행되어야 하는 것 같습니다. 따라서 탈출이 작동하지 않을 ssh
수 있습니다 .sshpass
ssh/config
그러나 원하는 옵션 sshpass
으로 스크립트를 실행하는 것은 가능해야 합니다 . ssh
이것은 당신이 한 것처럼 필요한 구성을 설정하여 저에게 효과적이었습니다 ~/.ssh/config
.
#/bin/bash
if [ -z "$1" ] ; then echo "usage: $0 <args...>" ; exit 1 ; fi
sshpass -e ssh "$@"
사용자가 로그인하도록 설정할 수도 .ssh/config
있으므로 필요하지 않을 수도 있습니다 . 또한 알 수 없는 호스트 키에 대한 요청을 잘 처리 -l
하지 못하는 것 같으 므로 미리 설정(또는 사용)해야 할 수도 있습니다.sshpass
ssh
known_hosts
StrictHostKeyChecking no
답변2
또 다른 방법은 퍼티 도구에서 plink를 사용하는 것입니다. 바라보다:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html "plink -pw ..."를 수행할 수 있는 것 외에도 원격 스크립팅에 "-m" 옵션을 사용할 수도 있습니다.