1.修改ssh登录端口
1.1 登录远程linux主机:
#linux:
$ ssh user@ip -p port
#windows git-bash:
# ssh user@ip port
1.2 修改ssh登录端口
#以下操作在远程linux主机中操作:
$ vi /etc/ssh/sshd_config
找到sshd_config
文件中如下选项并修改:
#Port 22
#修改为:
Port 60022 #这里修改为你想要设置的端口,以60022为例
1.3 修改防火墙配置
$ vi /etc/sysconfig/iptabels
添加以下规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 60022 -j ACCEPT
修改完成后,刷新iptables并重启ssh服务
$ systemctl restart iptables.service
$ systemctl restart sshd.service
此时如果再使用22端口进行ssh连接,就会报错,用60022端口连接才可以建立。
2.免密登录
SSH免密登录利用了rsa密钥对匹配的原理,可以允许用户从本地不用密码就可以访问到远程主机,让我们来看看怎么做。
2.1 本地生成密钥对
# 在本机命令行控制台输入:
$ ssh-keygen
会有提示,连续按三次回车。
此时会在系统用户的.ssh目录下生成一对密钥文件:私钥文件id_rsa和公钥文件id_rsa_pub。
2.2 将本地公钥内容追加到远程主机的授权文件(authorized_keys)中
本地查看id_rsa_pub文件内容:
$ cat ~/.ssh/id_rsa_pub
复制得到的公钥字符串,在远程服务器上编辑authorized_keys文件:
$ vi .ssh/authorized_keys
将刚刚得到的本地公钥字符串添加到该文件的末尾(如果是新建的文件就直接添加)
编辑保存完成后,修改该文件的权限:
$chmod 600 .ssh/authorized_keys
2.3 修改ssh配置
编辑远程服务器上的sshd_config
文件:
$vi /etc/ssh/sshd_config
找到如下选项并修改(通常情况下,前两项默认为no,地三项如果与此处不符,以此处为准):
#启用密钥验证
RSAAuthentication yes
PubkeyAuthentication yes
#指定公钥数据库文件
AuthorsizedKeysFile.ssh/authorized_keys
编辑保存完成后,重启ssh服务使得新配置生效:
对于centos7,使用以下命令:
$ systemctl restart sshd.service
对于centos6,使用以下命令:
$ service sshd restart
此时,就可以通过ssh命令免除密码直接登录远程主机了,在本地命令行控制台输入:
$ ssh user@ip -p 60022
就可以了(第一次需要输入密码,以后就不用了)
3. 禁止SSH口令登录
为了安全性更高,我们既然已经使用了密钥免密登录,那么就可以直接禁止再使用口令来连接SSH远程主机了。
3.1 更改ssh配置
编辑远程服务器上的sshd_config
文件:
$vi /etc/ssh/sshd_config
找到如下选项并修改(通常情况下,前两项默认为no,地三项如果与此处不符,以此处为准):
#PasswordAuthentication yes 改为
PasswordAuthentication no
编辑保存完成后,重启ssh服务使得新配置生效,然后就无法使用口令来登录ssh了
$ systemctl restart sshd.service