小智 29
安装sshpass,然后启动命令:
sshpass -p "yourpassword" ssh -o StrictHostKeyChecking=no yourusername@hostname
Run Code Online (Sandbox Code Playgroud)
anu*_*ava 17
出于安全原因,您必须避免在命令行上提供密码,否则运行ps命令的任何人都可以看到您的密码.最好使用这样的sshpass实用程序:
#!/bin/bash
export SSHPASS="your-password"
sshpass -e ssh -oBatchMode=no sshUser@remoteHost
Run Code Online (Sandbox Code Playgroud)
您可能对如何使用Bash脚本中的密码运行sftp命令感兴趣?
And*_*ahl 11
首先:除非你知道为什么这是安全的事情,否则不要把秘密以明文 形式存在(即你已经评估了攻击者知道这个秘密可以造成什么样的伤害).
如果你可以在你的脚本中放置秘密,你可以随身携带一个ssh密钥并在ssh-agent
shell中执行:
#!/usr/bin/env ssh-agent /usr/bin/env bash
KEYFILE=`mktemp`
cat << EOF > ${KEYFILE}
-----BEGIN RSA PRIVATE KEY-----
[.......]
EOF
ssh-add ${KEYFILE}
# do your ssh things here...
# Remove the key file.
rm -f ${KEYFILE}
Run Code Online (Sandbox Code Playgroud)
使用ssh密钥的一个好处是,您可以轻松使用强制命令来限制密钥持有者在服务器上可以执行的操作.
更安全的方法是让脚本运行ssh-keygen -f ~/.ssh/my-script-key
以创建专用于此目的的私钥,但是您还需要一个例程来将公钥添加到服务器.