是否可以告诉ssh客户端如果密钥认证失败则不要提示输入密码,而是报告一个错误连接并让我的脚本继续运行?
#1 楼
对于OpenSSH,有BatchMode,除了禁用密码提示外,还应禁用查询密钥的密码短语。BatchMode
如果设置为“是”,则将禁用密码短语/密码查询。参数必须为
“是”或“否”。默认值为“否”。
示例用法:
ssh -oBatchMode=yes -l <user> <host> <dostuff>
评论
这对我禁用了公共密钥身份验证。我指定了ssh user @ host -C somecommand。对我有用的只是ssh user @ host -oPreferredAuthentications = publickey -C'echo success'
– A.B.卡罗尔
19-09-3在7:33
#2 楼
要禁用当前ssh连接尝试的密码身份验证,请在命令行中传递此选项:将来与任何主机的所有连接的密码验证都将以下内容添加到您的
~/.ssh/config
中: /.ssh/config:-o PasswordAuthentication=no
以上选项适用于传出的ssh连接,即您尝试连接到远程ssh的位置服务器。
要在ssh服务器上禁用密码身份验证(即适用于所有传入的ssh连接),请将
PasswordAuthentication no
添加到/etc/ssh/sshd_config
并重新启动sshd
。评论
如果您不想禁用所有ssh客户端连接的密码身份验证,也可以在命令行上指定选项。在您的ssh命令中添加“ -oPasswordAuthentication = no”。
–cas
09年9月3日在11:23
这不会阻止输入密码提示。 OP的脚本仍将挂起。
–约书亚·斯威克(Joshua Swink)
09年11月4日在20:02
@JoshuaSwink:是的。我刚刚尝试了它(在命令行上以-oPasswordAuthentication = no出现。您遇到诸如权限被拒绝(公共密钥,密码)之类的错误,并且它立即退出。
– Timmmm
19年12月18日在16:53
#3 楼
如果您使用的是dropbear,只需添加“-s
”选项以禁用密码身份验证。评论
+1(不假设客户端为openssh :-)
–cas
09年9月3日在11:55
#4 楼
在命令行(或~/.ssh/config
)上,可以设置PreferredAuthentications
。PreferredAuthentications=publickey
评论
我认为,在命令行上,您需要将选项包装在引号中,然后将其传递给-o选项。
–克雷格·沃克(Craig Walker)
2009年9月11日下午1:20
@CraigWalker您也可以按原样传递它,即ssh -o PreferredAuthentications = publickey
– Tobias Kienzler
13-10-29在13:33
@CraigWalker如果您希望使用空格分隔选项和值,则需要用引号引起来。 ssh“ -oPreferredAuthentications publickey”
– Timo
18年3月14日在12:02
#5 楼
这是一个示例sftp bash脚本代码段。如果出现故障,我正在使用“ -o BatchMode = Yes”禁用密码提示。并检查frp返回码以检查ftp连接是否失败。sftp -o "IdentityFile=<YOUR_IDENTTIY_FILE>" -o "BatchMode=Yes" userName@ftpserver.com <<EOF
cd /$remotepath
mget *.csv $localpath/download
quit
EOF
exit_code=$?
if [[ $exit_code != 0 ]]; then
echo "sftp error, failed to connect to ftp server" >&2
exit 1
fi
评论
只是想将BatchMode设置为yes是禁用交互式身份验证(即密码提示)的原因。
–鲁本
20年6月19日在3:44
评论
老实说,最好将您的内容移植到Ansible :)一旦做出切换,就再也不会回头了。