Putty WinScp 免密登录,并且禁用root远程
1 2 3 4 | https://blog.csdn.net/simploving/article/details/79631588 http://www.10qianwan.com/articledetail/399894.html https://blog.csdn.net/weixin_45383198/article/details/103486821 https://www.cnblogs.com/chensiqiqi/p/6550221.html |
香港一台服务器
杭州一台服务器
两台都如下操作
1-1. 新建一个test用户,提升为管理员
1 2 | adduser test passwd test |
1-2. 赋予test账户root权限
1 | vi /etc/sudoers |
1 2 | root ALL=(ALL) ALL test ALL=(ALL) ALL //增加这行 |
1-3. 重启sshd
1 | systemctl restart sshd |
2-1. 修改 /home/ 文件 及所有子文件 拥有者为test [原本是root]
1 | ls -l / |
1 2 | chown -R test:test /home //把home拥有者改为test ls -l / //查看拥有者 |
会遇到如下报错:
1 2 3 4 | chown: changing ownership of ‘/home/wwwroot/default/vermaxcn/pic/.user.ini’: Operation not permitted chown: changing ownership of ‘/home/wwwroot/default/vermaxcn/.user.ini’: Operation not permitted chown: changing ownership of ‘/home/wwwroot/default/webcode/.user.ini’: Operation not permitted chown: changing ownership of ‘/home/wwwroot/default/linuxsoft/.user.ini’: OOperation not permitted |
直接执行以下代码
1 2 3 4 | chattr -i /home/wwwroot/default/vermaxcn/pic/.user.ini chattr -i /home/wwwroot/default/vermaxcn/.user.ini chattr -i /home/wwwroot/default/webcode/.user.ini chattr -i /home/wwwroot/default/linuxsoft/.user.ini |
1 2 3 | chattr -i /home/wwwroot/default/hongshengstone/.user.ini chattr -i /home/wwwroot/default/linuxsoft/.user.ini chattr -i /home/wwwroot/default/vermaxcn/.user.ini |
3-1. test 登陆系统,生成公钥,私钥
1 | ssh-keygen -t rsa -C "test@izbp1d9x6l987sr8ixcwdsz" -f ~/.ssh/id-rsa |
1. 生成公钥,私钥前 不要用sudo su, 否则出来的公钥,私钥是root@izbp1d9x6l987sr8ixcwdsz的,别的管理员用不了.
2. -C “test@izbp1d9x6l987sr8ixcwdsz” 是指为 test@izbp1d9x6l987sr8ixcwdsz 做的公钥,私钥
3. -f ~/.ssh/id-rsa 是指存放路径:/home/test/.ssh/id-rsa
3-2. 以下是生成公钥/私钥过程: //一路回车就可以
1 2 3 4 5 6 7 | Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/test/.ssh/id-rsa. Your public key has been saved in /home/test/.ssh/id-rsa.pub. The key fingerprint is: SHA256:Br2WeareaaerAERAERAERAEDAERAWREADFEAREA test@izbp1d9x6l987sr8ixcwdsz |
1 2 | cd ~/.ssh/ //也可以用 cd /home/test/.ssh/ ls |
1 2 | cat ~/.ssh/id-rsa //[密钥] 也可以用 cat /home/test/.ssh/id-rsa cat ~/.ssh/id-rsa.pub //[公钥] 也可以用 cat /home/test/.ssh/id-rsa.pub |
3-3. 把公钥信息写入authorized_keys文件中
1 2 | cd ~/.ssh/ //也可以用 cd /home/test/.ssh/ cat ~/.ssh/id-rsa.pub >> ~/.ssh/authorized_keys //也可以用 cat /home/test/.ssh/id-rsa.pub >> /home/test/.ssh/authorized_keys |
3-4. 修改目录(700)和文件(600)的权限
1 2 | chmod 700 ~/.ssh //修改权限,也可以用 chmod 700 /home/test/.ssh chmod 600 ~/.ssh/authorized_keys //修改权限,也可以用 chmod 600 /home/test/.ssh/authorized_keys |
4-1. 生成putty的私钥
由于SSH的标准中,并没有固定密钥文件的格式。而Putty使用的私钥格式和OpenSSH生成的有点不同,需要转换一下。
a) 把id_rsa传到Windows机器上
b) 使用puttygen的“Load”读取id-rsa文件
这里也可以从图中的公钥信息,与id-rsa.pub对比一下,应该是一致的。
c) 点击“Save private key”保留私钥。
d) putty使用该新的私钥登陆服务器即可。
winscp也可以免密进入了
5-1. 将hk服务器公钥传到杭州服务器
1 | scp /home/test/.ssh/id-rsa.pub test@121.196.179.9:/home/test/.ssh/id-hk-rsa.pub |
5-3. 把hk服务器公钥信息写入杭州服务器authorized_keys文件中
1 2 | cd ~/.ssh/ //也可以用 cd /home/test/.ssh/ cat ~/.ssh/id-hk-rsa.pub >> ~/.ssh/authorized_keys //也可以用 cat /home/test/.ssh/id-rsa.pub >> /home/test/.ssh/authorized_keys |
5-4. 修改目录(700)和文件(600)的权限
1 2 | chmod 700 ~/.ssh //修改权限,也可以用 chmod 700 /home/test/.ssh chmod 600 ~/.ssh/authorized_keys //修改权限,也可以用 chmod 600 /home/test/.ssh/authorized_keys |
5-5. 远程免密
1 | ssh -p22 121.196.179.9 -i /home/test/.ssh/id-rsa -l test |
-p22 -p 端口号
-i /home/test/.ssh/id-rsa -i 指定key文件
-l test -l 指定用户
6. 测试Rsync免密传输
1 | rsync -av -e "ssh -i /home/test/.ssh/id-rsa" /home/abc test@121.196.179.9:/home/abc |
这样好像文件会传到对方 /home/abc/abc 的位置
7. 正式布局
1 | vi /home/webdata.sh |
rsync以daemon的方式启动
1 2 | #!/bin/sh rsync -avzP /home/wwwroot/default/ test@121.196.179.9::web --password-file=/etc/rsyncd.secrets |
rsync + ssh 传输
1 2 | #!/bin/sh rsync -av -e "ssh -i /home/test/.ssh/id-rsa" /home/wwwroot/default/ test@121.196.179.9:/home/wwwroot/ |
最后决定还是用 rsync以daemon的方式启动
ssh在生产环境下,服务器之间往往是不允许开通的,因为结合ssh可以实现服务器之间的跳转,用户就很方便实现控制这些机器
所以,rsync+ssh的方式,往往只可以在测试环境下,或者不对外提供网络访问权限的场景下使用.
-v:传输过程中打印调式信息
–progress:传输过程中打印当前进度
-r:递归传输所有子目录和文件
-z, –compress-level=9:传输过程中对文件进行压缩,可提高传输效率
-o, -g, -p:传输过程中保持文件的ownership, group和permission
–remove-source-files:传输结束之后删除源文件。注意,在rsync 2.x中,相应的选项为–remove-sent-files
–temp-dir, –partial-dir, –delay-updates:将源目录下所有的文件放在一个transaction里,要么全成功,要么全失败。传输过程中将文件放在temp-dir和partial-dir中,全部完成之后再移动到目标目录。这几个选项在remotehost上有其它程序需要consume传输完成之后的文件时特别有用。
–itemize-changes, –out-format:按照指定格式输出每一个要传送的文件信息,这在应用程序需要捕获传输的文件列表时很有用。比如,应用程序仅指定在两个机器间要同步的目录(从localhost到remotehost,或者从remotehost到localhost),然后通过这两个选项就可以捕获rsync的output,过滤出相应的输出行(根据–out-format中指定的”FILEDETAIL”前缀字符串),然后就可以构建出目录下的文件列表了,比如文件名(%%n)、文件大小(%%l)等等