如何使用包含空格的SSH密码?
如何使用包含空格的SSH密码?
其实SSH本身是支持带空格的密码的,你遇到的问题大概率是输入时的细节问题,或者没掌握正确的输入/传递方式,下面给你几个可行的解决思路:
交互式输入时确保准确:因为SSH输入密码时是隐藏的,看不到输入的内容,很容易在输入带空格的密码时出错——比如多打了空格、漏打了空格,或者空格位置不对。比如你的密码是
I am superuser,输入时要慢一点,仔细确认每个字符和空格的位置,避免误输入。如果需要在命令行直接传递密码(不推荐):如果你一定要在命令行里直接指定带空格的密码,需要用引号把整个密码括起来,或者给每个空格加转义符
\。比如用sshpass工具的话:- 用双引号包裹:
sshpass -p "I am superuser" ssh <user>@<hostname/IP> - 转义空格:
sshpass -p I\ am\ superuser ssh <user>@<hostname/IP>
注意:这种方式非常不安全,因为密码会被记录在命令历史里,不建议日常使用。
- 用双引号包裹:
更推荐的替代方案:使用SSH密钥对:带空格的密码本身记忆和输入都麻烦,不如直接配置SSH密钥登录,既不用每次输密码,安全性也更高。操作步骤很简单:
- 在本地终端执行
ssh-keygen,一路按回车(不需要设置密钥密码,或者按需设置)生成密钥对; - 把本地的公钥(默认是
~/.ssh/id_rsa.pub里的内容)复制到服务器的~/.ssh/authorized_keys文件中; - 之后再用
ssh <user>@<hostname/IP>登录,就不用输密码了。
- 在本地终端执行
关于你提到的现象:输入正确的带空格密码一直提示重试,而错误密码三次就断开——这很可能是你自以为输入的是正确密码,但实际上因为空格的问题输错了(比如多了一个空格或者少了一个),而服务器设置了MaxAuthTries 3,所以错误密码输三次就断开;而你每次输入带空格的“正确密码”其实都是错误的,所以会一直提示重试,直到你主动取消。
备注:内容来源于stack exchange,提问作者DarkDead
相关产品推荐
相关产品推荐

