最近在做一个文档同步的功能,选用的是scp功能进行远程文件的传输
大家都知道scp命令是linux下常用的远程文件传输命令,现在工作中需要进行scp命令进行传输,正常情况下scp使用22端口进行通信,但是需求为了安全起见选用了其他端口进行通信,下面举例介绍一下具体的做法。
首先,需求是通过1000端口从服务器A将文件拷贝到服务器B。而且不要输入用户名和密码。
首先配置服务器A和B实现1000端口通信。
服务器A IP:172.16.10.10
服务器B IP:172.16.10.20
修改/etc/ssh/sshd_config配置
命令如下:
vi /etc/ssh/sshd_config
找到port字段,将注释’#’号去掉,并修改22为1000.
服务器A和B都要修改,重启ssh服务,centos使用
service sshd restart
最后检查防火墙是否开启,如果开启,请放开1000端口
下面配置互信访问:
在服务器A中执行如下命令:
ssh-keygen
一路enter键
设置完之后进入ssh目录下
cd ~/.ssh/
查看到有两个文件:id_ras和id_rsa.pub
这两个文件一个是私钥,一个是公钥,当然pub就是public的意思,是公钥。
打开文件id_rsa.pub
vi id_rsa.pub
复制文件内容
进入服务器B
touch authorized_keys
vi authorized_keys
将复制的文件内容复制到authorized_keys 中
这里有一个坑,要设置authorized_keys 的权限为744,互信会生效。
接下来,使用如下命令实现免登录。
ssh 172.16.10.20 -p 1000
但是不想输入后面的-p 1000
请在~/.ssh/目录下创建config文件
touch config
vi config
将下面的内容粘贴进去
Host B
HostName 172.16.10.20
User root
Port 1000
接下来再A上输入以下命令就可以直接连接到B上了。ps:这个文件可以配置多台主机。
ssh B
Ok,整个流程大概是这样子的了,如果需要从B访问A将上述方法修改一下就好了。