需求:A机往B机scp操作
事件:要求运维的系统管理员给配个密钥,把公钥分配给B机。原以为他把公钥让我扔给B机的主人,而私钥他会配好,结果啥也没做, 啥也没配,也没说。结果,我杯剧:
情景:
SSH到A机,scp数据时出现如下错误:
Permission denied (publickey,gssapi-with-mic).
lost connection
咨询了一下,私钥放在哪。答案:本地(A机)没放。好吧,我认,自个动手把私钥cp到A机的某目录下如/home/ysl/cfg/ysl_key,并更改文件的权限:chmod 0600 /home/ysl/cfg/ysl_key
继续试着执行scp操作:
scp -r /data/tempdir/20101025 -i /home/ysl/cfg/ysl_key ysl@5.5.5.5:/data/ysldata
结果错误信息仍然存在。
那么,试着SSH一下:
ssh -i /home/ysl/cfg/ysl_key ysl@5.5.5.5: "ls -ld /data/ysldata"
很好,有正常信息出现,那为什么scp不行??
试着在scp时打印出相关日志,执行:
scp -vvv /data/tempdir/20101025/file -i /home/ysl/cfg/ysl_key ysl@5.5.5.5:/data/ysldata
日志中发现-i指定私钥不被识别,只会在当前账号的根目录去找/home/ysl/.ssh/id_rsa。
继续试着执行cp /home/ysl/cfg/ysl_key /home/ysl/.ssh/id_rsa
然后重新scp操作,发现正常了。
结论:
据同事给出scp的手册中说明-i identity_file的信息:
Selects the file from which the identity (private key) for RSA authentication is read. This option is directly passed to ssh(1).
相当于说-i是指定使用RSA的私钥。上面用到的私钥/home/ysl/cfg/ysl_key并不是RSA格式的,因此无效。
解决:
1. 更找密钥,生成RSA格式的
2. 以某个要执行scp动作的账号按以下步骤操作(如elian)
mkdir /elian/.ssh
chmod 0700 /elian/.ssh
cp /home/ysl/cfg/ysl_key /elian/.ssh/id_dsa
chown -R root:root /elian/.ssh
chmod 0600 /elian/.ssh/id_dsa
Elian
Configuration Manage Engineer
MSN: smallfish961@hotmail.com
Email: smallfish382+work@gmail.com
No comments:
Post a Comment