一、在主机192.168.2.101上建aaa.txt文件传输到192.168.2.102这台,使用命令
rsync -avz /home/soft/aaa.txt root@192.168.2.102:/home/soft/
通常会要求输入root用户的密码
解决方法:
使用 ssh key
1、在101服务器上root用户执行,
ssh-keygen -t rsa
然后直接回车就会在该用户下生成 /root/.ssh文件夹,里面有三个文件
id_rsa
id_rsa.pub
known_hosts
2、在102服务器上创建 .ssh目录
mkdir -p /root/.ssh
touch authorized_keys
将第1步的 id_rsa.pub的内容拷入到 authorized_keys ,保存退出
3、这时候,执行 rsync 从101服务器将文件传输到102就不需要输入密码就可以传输成功了。
可以使用 ss -tulnp | grep 873 或者使用 netstat -tulnp | grep 873 查看端口情况
[root@localhost ~]# ss -tulnp | grep 873
tcp LISTEN 0 128 *:873 *:* users:(("sshd",pid=1148,fd=3))
tcp LISTEN 0 128 :::873 :::* users:(("sshd",pid=1148,fd=4))
问题:
第3步是在101 执行rsync命令是不需要输入密码,但是如果在102执行rsync就需要输入密码。
解决:
这时候,就需要在102执行生成 ssh key,然后拷贝到101上,步骤同上。
二、以上传输都是通过 ssh 默认端口 22 传输的。
如果需要修改传输端口:
vi /etc/ssh/sshd_config
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 873
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
.......
修改Port 22 为 Port 873,保存退出
重启 sshd
systemctl restart sshd
正常到这步就把ssh的22端口修改为873,查看系统日志,如果出现以下异常的话。
less /var/log/secure
出现以下异常信息
Aug 18 11:20:17 localhost sshd[4105]: error: Bind to port 873 on 0.0.0.0 failed: Permission denied.
Aug 18 11:20:17 localhost sshd[4105]: error: Bind to port 873 on :: failed: Permission denied.
Aug 18 11:20:17 localhost sshd[4105]: fatal: Cannot bind any address.
修改selinux 安全配置
vi /etc/selinux/config
将 SELINUX=enforcing 修改为 SELINUX=disabled
然后重启服务器后,就可以正常使用873端口传输文件
rsync -avz -e 'ssh -p 873' /home/soft/aaa.txt root@192.168.2.102:/home/soft/
问题:以上是没有开启防火墙情况;如果开启了还需要做哪些处理。
需要防火墙开放873端口,并重新加载防火墙
firewall-cmd --zone=public --add-port=873/tcp --permanet
firewall-cmd --reload
firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports: 873/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
删除端口
firewall-cmd --zone=public --remove-port=873/tcp --permanet