Putty WinScp 免密登录,并且禁用root远程

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)等等

Leave a Reply

Your email address will not be published. Required fields are marked *