1、机器互信
设置三台机器互信:192.168.175.11,192.168.175.12,192.168.175.13
即每台机器都能无密码登录另外的一台服务器,执行命令,
在主机:192.168.175.11 [root@abc ~]#ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 55:b9:07:84:47:b3:37:6c:55:61:9c:1b:f1:cf:93:55 root@abc The key's randomart image is: +--[ RSA 2048]----+ | +=..+E| | ..++.=o| | ...o= =| | . .o.++| | S . oo| | .| | | | | | | +-----------------+ [root@abc ~]#ssh-copy-id root@192.168.175.12 [root@abc ~]#ssh-copy-id root@192.168.175.13 [root@abc ~]#ssh root@192.168.175.12 "mkdir /tmp/bbb" [root@abc ~]#ssh root@192.168.175.13 "mkdir /tmp/bbb"
有的机器会报错,需要使用命令:ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 rsync@192.168.175.13"
这样,主机:192.168.175.11就可以在12,13上面执行命令
同样在12上生成私钥,传到11,13机器上面
同样在13上生成私钥,传到11,12机器上面
这样,三台机器都可以互相在其他机器上面操作而不输入密码
2、常用的登录设置
1、修改默认的登录端口
2、修改防火墙配置
3、修改root密码
4、禁止root登录,采用普通用户登录系统,然后切换到root账号上面
5、禁止使用密码登录,全部使用公钥
6、设置普通用户使用公钥登录到服务器
7、使用无密码su – 提权到root权限上面
———————————————————————-
上面的操作都在实际情况下操作,假设操作的机器是在远程,无法接触到物理机,因此下面的操作一定要谨慎,操作的步骤一定不能出错,不然会出现自己连接不上远程服务器的悲剧
假设需要操作的机器有公网IP,可以直接连接,不用通过DNAT方式连接内网的机器
1、修改默认端口,先修改配置文件,默认端口是22号端口,假如要修改为2222号端口,先增加一个端口为2222,原有的22号端口也保留。以防新的修改出问题,导致连接不上,假如只有2222号端口,修改完成后断电了,重启,就连不上了,任何时候,都要确保有一个能够正常工作,等另外一个能正常工作后才能将现有的通道切除
[root@localhost ~]#vim /etc/ssh/sshd_config Port 22 Port 2222 [root@localhost ~]#service sshd reload Reloading sshd: [ OK ]
2、设置防火墙增加端口,然后重载配置
[root@localhost ~]#vim /etc/sysconfig/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT [root@localhost ~]#service iptables start iptables: Applying firewall rules: [ OK ]
3、然后用另一个终端连接,确保能在2222号端口连接上
4、设置sshd配置文件,删除原有的22号端口
[root@localhost ~]#vim /etc/ssh/sshd_config Port 2222 [root@localhost ~]#service sshd reload Reloading sshd: [ OK ] [root@localhost ~]#ss -tnl State Recv-Q Send-Q Local Address:Port LISTEN 0 128 :::2222 LISTEN 0 128 *:2222
重载后查看22号端口已经不再监听,但是原有的通过22号端口访问的ssh依旧可以正常工作, 只是新的终端必须用2222号端口了
5、删除防火墙里面的22号端口,重载配置文件
[root@localhost ~]#vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT [root@localhost ~]#service iptables reload iptables: Trying to reload firewall rules: [ OK ]
因为终端和服务器的连接状态是ESTABLISHED ,所以原有的22号端口的终端依旧可以正常工作
6、下面的操作不涉及到防火墙,操作步骤是先添加普通用户,确保可以通过普通用户使用公钥登录到机器,并且能su – 到root正常操作后,再修改root密码,禁止root登录,任何时候,都要确保有一个能够正常工作,等另外一个能正常工作后才能将现有的通道切除
7、添加普通用户并设置密码,设置复杂些,保存,一般不用这个密码
[root@localhost ~]#useradd admin [root@localhost ~]#id admin uid=501(admin) gid=501(admin) groups=501(admin) [root@localhost ~]#passwd admin Changing password for user admin. New password: qwerty BAD PASSWORD: it is based on a dictionary word BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully.
8、切换到普通用户生成公私钥对
[root@localhost ~]#su - admin [admin@localhost ~]$ll -a total 28 drwx------ 4 admin admin 4096 May 14 18:58 . drwxr-xr-x. 4 root root 4096 May 14 18:58 .. -rw-r--r-- 1 admin admin 18 May 11 2016 .bash_logout -rw-r--r-- 1 admin admin 176 May 11 2016 .bash_profile -rw-r--r-- 1 admin admin 124 May 11 2016 .bashrc drwxr-xr-x 2 admin admin 4096 Nov 12 2010 .gnome2 drwxr-xr-x 4 admin admin 4096 Jul 21 2016 .mozilla [admin@localhost ~]$ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/admin/.ssh/id_rsa): Created directory '/home/admin/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/admin/.ssh/id_rsa. Your public key has been saved in /home/admin/.ssh/id_rsa.pub. The key fingerprint is: e2:f3:e3:6a:52:39:02:95:95:b5:8f:1d:5f:f1:d5:66 admin@localhost.localdomain The key's randomart image is: +--[ RSA 2048]----+ | o.o. . o| | o . . oE| | . . . .o.| | . + o . | | . ..S o . | | ..+. | | oo. | | . .o. | | o.oo. | +-----------------+ [admin@localhost ~]$cd .ssh/ [admin@localhost ~/.ssh]$ls id_rsa id_rsa.pub [admin@localhost ~/.ssh]$ll total 8 -rw------- 1 admin admin 1675 May 14 19:03 id_rsa -rw-r--r-- 1 admin admin 409 May 14 19:03 id_rsa.pub
9、将生成的公钥复制为文件:authorized_keys,因为使用终端使用私钥登录这台机器,然后将生成的私钥传到windows上面,保密保存
[admin@localhost ~/.ssh]$cp id_rsa.pub authorized_keys [admin@localhost ~/.ssh]$ll total 12 -rw-r--r-- 1 admin admin 409 May 14 19:05 authorized_keys -rw------- 1 admin admin 1675 May 14 19:03 id_rsa -rw-r--r-- 1 admin admin 409 May 14 19:03 id_rsa.pub [admin@localhost ~/.ssh]$sz id_rsa
10、使用xshell私钥登录
使用普通用户登录,点击浏览,找到刚才的私钥文件
然后就可以登录到admin用户了
11、继续在刚才的root终端下操作,设置admin用户su – 到root用户免密码
[root@localhost ~]#sed -i 's@.*trust use_uid$@auth sufficient pam_wheel.so trust use_uid@' /etc/pam.d/su [root@localhost ~]#cat /etc/pam.d/su #将第四行的注释去掉 #%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. auth sufficient pam_wheel.so trust use_uid [root@localhost ~]#gpasswd -a admin wheel #将admin用户添加到wheel组里面
12、在终端配置,意思是用户登录后,会自动执行这里面的命令,避免每一次登录都要手动su到root上面
最后达到的效果,每次会自动无密码切换到root上面
13、到这里,这条通道就成功的建立了,可以修改原来的root配置了,首先修改root密码
[root@localhost ~]#echo "redhat----" | passwd --stdin root Changing password for user root. passwd: all authentication tokens updated successfully.
14、设置sshd的配置文件
通常情况下我们在连接 OpenSSH服务器的时候假如 UseDNS选项是打开的话,服务器会先根据客户端的 IP地址进行 DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,并验证是否与原始 IP地址一致,通过此种措施来防止客户端欺骗。平时我们都是动态 IP不会有PTR记录,所以打开此选项也没有太多作用。我们可以通过关闭此功能来提高连接 OpenSSH 服务器的速度。
GSSAPI 主要是基于 Kerberos 的,因此要解决这个问题也就变成要系统配置有 Kerberos, 一般用户是没有配置 Kerberos的,反正我是没见过这种方式 SSH 登录的。 所以那就直接把 SSH 服务端的 GSSAPIAuthentication 直接关掉吧,客户端也可以关掉。
[root@localhost ~]#sed -i 's@.*GSSAPIAuthentication.*@GSSAPIAuthentication no@' /etc/ssh/sshd_config #会 [root@localhost ~]# [root@localhost ~]#sed -i 's@.*UseDNS.*@UseDNS no@' /etc/ssh/sshd_config [root@localhost ~]# [root@localhost ~]#sed -i 's@^#PermitRootLogin.*@PermitRootLogin no@' /etc/ssh/sshd_config [root@localhost ~]# [root@localhost ~]#sed -i 's@^PasswordAuthentication.*@PasswordAuthentication no@' /etc/ssh/sshd_config [root@localhost ~]#service sshd reload Reloading sshd: [ OK ]
15、到这里就设置完成了,root用户禁止登录,也禁止使用密码登录,只能使用admin使用公钥登录到服务器,然后su – 到root上面进行操作
注意:禁止root登录会影响使用在root用户下scp命令,rsync使用ssh加密的功能,但是可以使用普通用户来进行这些操作,普通用户不影响。
注意:禁止远程root登录后,要想传数据到远程主机,可以在远程主机添加一个普通用户,然后:scp tmp1.sh bob@1.1.1.1:/home/bob 类似于这种传数据到远程主机,但是要注意远程目录要添加的普通用户要有写权限
远程主机添加用户后最好切换到该用户操作创建.ssh目录,添加:authorized_keys文件,以防使用root权限创建后,bob用户对该目录无法操作
经测试:centos6.5远程机器创建的用户,即使添加了authorized_keys,本地主机依然不能通过公钥传输文件到远程主机,必须给远程主机的该用户添加密码,才可以通过公钥传输文件到该用户
centos6.8可以在远程机器创建用户,添加了authorized_key,不用创建密码就可以通过公钥传输文件到该用户
如果公钥传输过去后,一直需要输入密码,可能的问题
一个常犯的错误是文件权限不对。$HOME只能自己可写 (0755 或者 0750),
.ssh设置成 0700,authorized_keys和id_rsa.pub 0644, id_rsa和authorized_keys 0600
或者使用:ssh-copy-id root@192.168.175.13 可以自动解决上面的权限问题
–
–
–
评论前必须登录!
注册