首页
登录 | 注册

linux(CentOS7)服务器环境搭建之-openssh

openssh允许用户通过ssh访问计算机,通过配置可用秘钥配对形式登录访问,省去输入用户名和密码的烦恼,并一定程度上提高了计算机的安全性。

--安装配置ssh(允许安全的public key登录)

1.安装OpenSSH服务(CentOS系统默认安装了openssh)
yum install openssh-server -y

2.配置OpenSSH服务(默认的配置已可以正常工作)
OpenSSH的主配置文件:/etc/ssh/sshd_config

常见的配置选项
Port=22  设置SSH的端口号是22(默认端口号为22)
Protocol 2  启用SSH版本2协议
ListenAddress 192.168.0.222  设置服务监听的地址
DenyUsers   user1 user2 foo  拒绝访问的用户(用空格隔开)
AllowUsers  root osmond vivek  允许访问的用户(用空格隔开)
PermitRootLogin  no  禁止root用户登陆
PermitEmptyPasswords no  用户登陆需要密码认证
PasswordAuthentication yes  启用口令认证方式

1>增加或修改SSH端口号
Port=22 改为自己想要的端口号(修改端口时候最好挑10000~65535之间的端口号,10000以下容易被系统或一些特殊软件占用,或是以后新应用准备占用该端口的时候,却被你先占用了,导致软件无法运行。)

2>设置SSH公钥登录
修改如下配置:
RSAAuthentication yes (RSAAuthentication设置为yes,意思是设置开启使用RSA算法的基于rhosts的安全验证)
PubkeyAuthentication yes (PubkeyAuthentication设置为yes,意思是设置开启公钥验证)
AuthorizedKeyFiles .ssh/authorized_keys (AuthorizedKeyFiles后面的目录,是你上传的公钥所保存的文件)
StrictModes no (trictModes设置为no,意思是设置关闭ssh在接收登录请求之前先检查用户家目录和rhosts文件的权限和所有权)

3.重启OpenSSH服务
service sshd restart 或 systemctl restart sshd.service

4.客户端生成公钥
5.服务端加入客户端公钥AuthorizedKeyFiles指定的目录下。
需要注意的是,这里的authorized_keys文件,虽然我们StrictModes设置为了no,但是还是建议修改一下文件的执行权限,比如用命令chmod 600 authorized_keys。

6.客户端通过ssh远程连接服务器
ssh username@hostname(hostIP) 或 ssh root@hostname(hostIP) -p port

7.如果已经可以连接上,则忽略此步骤(以下示例端口20000)
1>如果你关闭了SELinux,可以忽略。
(1)查看是否开启了SELinux
sestatus -v  
如果输出结果为:
SELinux status:                 disabled
说明有打开,可以通过修改SELinux的配置开启或关闭它:

vim /etc/selinux/config  
找到:
SELINUX=disabled
修改成:
SELINUX=enforcing
重启一下,就OK。

(2)semanage命令无法使用,或说找不到该命令。说明没有配置该命令,可以进行以下命令进行安装:
yum install policycoreutils-python
关于它的依赖库我就不作赘述,可以百度下更全面的安装semanage教程。

(3)先查看SELinux开放给ssh使用的端口
semanage port -l|grep ssh  
我的系统打印如下:
ssh_port_t                    tcp      22
可知,SELinux没有给SSH开放10086端口,那么我们来添加该端口:

semanage port -a -t ssh_port_t -p tcp 20000  
完成后,再次查看

semanage port -l|grep ssh  
ssh_port_t                    tcp      22,20000

2>如果你关闭了防火墙,可以忽略,话说防火墙不开启太危险了,建议开启。
先查看防火墙是否开启了20000端口:
firewall-cmd --permanent --query-port=20000/tcp  
打印结果如下:
no
表示没有开放20000端口,那么添加下该端口:

firewall-cmd --permanent --add-port=20000/tcp  
打印结果如下:
success

重新加载防火墙策略:
firewall-cmd --reload  
执行成功后,查看20000端口是否被开启:

firewall-cmd --permanent --query-port=20000/tcp  
打印结果如下:
yes

3>重启SSH服务和防火墙,最好也重启下服务器
systemctl restart sshd
systemctl restart firewalld.service  
shutdown -r now

4>尝试通过20000端口登录SSH,或者进入该服务器直接本地访问SSH如下:
ssh root@localhost -p 20000
如果成功,说明20000已经完全可以使用了,接下来你就可以根据上述步骤把sshd_config的Port22注释掉,SELinux和防火墙(Firewalld)关闭22端口就OK,大工造成!

8.补充说明
1>查看某端口是否被占用,以20000为例:
netstat -lnp|grep 20000  
如果没有任何打印,说明没有被占用。有打印的话,说明被占用了,一般会列出哪个进程占用。

2>CentOS7防火墙改为firewalld了,而不是iptables,对应的命令也请百度下,这里不作赘述。


2020 jeepxie.net webmaster#jeepxie.net
10 q. 0.008 s.
京ICP备10005923号