我需要创建一个自动向OpenSSH ssh客户端输入密码的脚本。
假设我需要使用密码a1234b SSH到myname@somehost。
我已经试过了……
#~/bin/myssh.sh
ssh myname@somehost
a1234b
...但这并不奏效。
如何将此功能放入脚本中?
我需要创建一个自动向OpenSSH ssh客户端输入密码的脚本。
假设我需要使用密码a1234b SSH到myname@somehost。
我已经试过了……
#~/bin/myssh.sh
ssh myname@somehost
a1234b
...但这并不奏效。
如何将此功能放入脚本中?
当前回答
如果您在Windows系统上执行此操作,您可以使用Plink (PuTTY的一部分)。
plink your_username@yourhost -pw your_password
其他回答
# create a file that echo's out your password .. you may need to get crazy with escape chars or for extra credit put ASCII in your password...
echo "echo YerPasswordhere" > /tmp/1
chmod 777 /tmp/1
# sets some vars for ssh to play nice with something to do with GUI but here we are using it to pass creds.
export SSH_ASKPASS="/tmp/1"
export DISPLAY=YOURDOINGITWRONG
setsid ssh root@owned.com -p 22
参考:https://www.linkedin.com/pulse/youre-doing-wrong-ssh-plain-text-credentials-robert-mccurdy?trk=mp-reader-card
使用公钥认证:https://help.ubuntu.com/community/SSH/OpenSSH/Keys
在源主机中只运行一次:
ssh-keygen -t rsa # ENTER to every field
ssh-copy-id myname@somehost
这就是全部,之后你就可以不用密码使用ssh了。
我设法让它工作了:
SSH_ASKPASS="echo \"my-pass-here\""
ssh -tt remotehost -l myusername
首先需要安装sshpass。
Ubuntu/Debian: apt-get安装sshpass Fedora/CentOS: yum安装sshpass Arch:吃豆人-S sshpass
例子:
sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no YOUR_USERNAME@SOME_SITE.COM
自定义端口示例:
sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no YOUR_USERNAME@SOME_SITE.COM:2400
注:
当传递-f标志时,Sshpass还可以从文件中读取密码。 使用-f可以防止在执行ps命令时密码显示。 存储密码的文件应具有安全权限。
这应该在大多数情况下都有帮助(你需要先安装sshpass !):
#!/usr/bin/bash
read -p 'Enter Your Username: ' UserName;
read -p 'Enter Your Password: ' Password;
read -p 'Enter Your Domain Name: ' Domain;
sshpass -p "$Password" ssh -o StrictHostKeyChecking=no $UserName@$Domain