Overview
前些天用ssh
通过命令行登录我们的bastion4
服务器还一切正常,到了昨天已经不能使用,但是用了相同的密钥的FileZilla
依然可以登录,这就很奇怪了。
1.问题所在
用FileZilla
登录到远程服务器,找到ubuntu
用户下面的.ssh
文件夹,打开之后可以看到只有一个文件authorized_keys
,我把它下载下来。完成之后,我到本机的/home/young/Downloads
文件夹里找到它,打开看到我的密钥已经添加进去了,看来是FileZilla
可以找到本地/home/young/.ssh/BingjiaoYang_ssh
这个文件,但是默认的
ssh ubuntu@bastion4.erc.monash.edu
命令现在已经找不到这个文件了。
经过Jerico
和Chris
两个人的指点,使用如下命令:
ssh -vvv ubuntu@bastion4.erc.monash.edu
显示日志信息如下(只截取最后核心信息):
debug1: Next authentication method: publickey
debug1: Trying private key: /home/young/.ssh/id_rsa
debug3: no such identity: /home/young/.ssh/id_rsa: No such file or directory
debug1: Trying private key: /home/young/.ssh/id_dsa
debug3: no such identity: /home/young/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/young/.ssh/id_ecdsa
debug3: no such identity: /home/young/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /home/young/.ssh/id_ed25519
debug3: no such identity: /home/young/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
意思就是找不到/home/young/.ssh/id_rsa
这个文件。
2.解决办法
解决办法有如下两个。
2.1 文件改名(不推荐)
把/home/young/.ssh/BingjiaoYang_ssh
这个文件改名为id_rsa
,同时把/home/young/.ssh/BingjiaoYang_ssh.pub
这个文件改名为id_rsa.pub
,这时候再用原命令登录就没有问题了。但是这个解决办法明显没有看透本质,所以推荐下一种。
2.2 直接指定密钥文件(推荐)
在命令行中直接输入ssh
,可以看到ssh
的用法:
➜ ~ ssh
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port]
[-Q cipher | cipher-auth | mac | kex | key]
[-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
可以看到,我们可以之间指定文件,来解决找不到文件的问题。所以,正确命令如下:
ssh ubuntu@bastion4.erc.monash.edu -i /home/young/.ssh/BingjiaoYang_ssh
以后就没有问题出现了。
还有一个问题有些人可能会困惑:为什么Filezilla
仍然可以正常登录?
原因就在于,我们在首次用Filezilla
登录时,会根据密钥文件生成一个BingjiaoYang_bastion4
文件,以后Filezilla
每次登录都会根据这个文件读取信息,一旦这个文件换了位置或者被删除,FileZilla
一样会无法登录。
更多关于远程登录服务器的细节,参考Chris
的文章:部署PhosphoPrediction。
最后,感谢Chris
和Jerico
的热心帮助。