如何免密在两台Linux机器之间相互传输文件
scp命令
使用scp在两台Linux机器之间相互传输文件,常用参数如下:
scp file.txt work@linux2:/home/work/somedir
scp -p file.txt work@linux2:/home/work/somedir # 保留创建时间、属性
scp -r xxx_dir work@linux2:/home/work/somedir # 复制目录
配置免密
为了避免每次传输都需要对方机器的密码,配置步骤如下:
第一步:配置机器1的的公钥
# 在机器1上
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
第二步:复制公钥到机器2上
# 在机器2上,打开 authorized_keys,追加在后面(文件不存在则新建)
ssh-keygen -t rsa
vim ~/.ssh/authorized_keys
然后反过来操作一遍。
不生效问题排查
可能问题1:最后确认一下ssh启用了authorized_keys 功能,如果是像下面被注释掉了,解开即可
sudo cat /etc/ssh/sshd_config |grep AuthorizedKeysFile
#AuthorizedKeysFile .ssh/authorized_keys
sudo vim /etc/ssh/sshd_config
可能问题2:查看系统安全日志,定位问题
执行 sudo vim /var/log/secure 查看系统的安全日志,查找refused关键字,然后在安全日志中看到SSH登录过程中提示了如下错误:后面的目录代表权限不匹配
Authentication refused: bad ownership or modes for file /home/jizx/.ssh/authorized_keys
解决,执行如下:
# chmod g-w /home/raini
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
PS:SSH进行认证的过程中除了对用户目录有权限要求外,对 .ssh 文件夹和 authorized_keys 文件同样也要限制。
(可选)重启SSH服务 service sshd restart