Linux下SSH服务的搭建

1. SSH协议简介

        安全外壳协议(Secure Shell),SSH为建立在应用层基础上的安全协议,SSH采用了密文的形式在网络中传输数据,实现了更高的安全级别,是Telent(终端仿真协议)的替代品

        openssh在CentOS发行版中默认安装,一般的安装目录为/etc/ssh,对应的服务器配置文件为/etc/ssh/sshd_config

1.1 查看本机是否安装openssh

1.2 openssh安装

[root@centos7 ~]# yum -y install openssh

1.3 服务的启动和关闭

[root@centos7 ~]# systemctl start sshd            #开启ssh服务
[root@centos7 ~]# systemctl stop sshd             #关闭ssh服务
[root@centos7 ~]# systemctl enable sshd           #开启自动启动ssh服务
[root@centos7 ~]# systemctl disable sshd          #开启不自动开启ssh服务

1.4 ssh配置文件

Port  22            Port"用来设置sshd监听的端口,如果不做修改,默认是22端口
Protocol  2 设置使用的SSH协议,默认为SSH2,其实可用的协议还有SSH1
ListenAddress  0.0.0.0 设置sshd服务器绑定的IP地址(IPV4),不需要做特殊处理,保持默认
ListenAddress :: 设置sshd服务器绑定的IP地址(IPV6)
PidFile /var/run/sshd.pid 可以放置sshd这个pid的文件
Compression yes  是否可以使用压缩指令
HostKey /etc/ssh/ssh_host_rsa_key     HostKey"用来设置服务器密匙文件的路径,保持默认即可
HostKey /etc/ssh/ssh_host_ecdsa_key  
HostKey /etc/ssh/ssh_host_ed25519_key
KeyRegenerationInterval 1h 用来设置在多少秒之后系统自动重新生成服务器的密匙
ServerKeyBits 1024 用来定义服务器密匙的长度,默认为1024位
SyslogFacility  AUTHPRIV 用来设定在记录来自sshd的消息的时候,是否给用来设定在记录来自sshd的消息的时候,是否给出“facility code”
LogLevel INFO 日志的等级
LoginGraceTime 2m 用来设置如果用户登录失败,在切断连接前服务器需要等待的时间,默认以秒为单位
PermitRootLogin no 用来设置超级用户root能不能用SSH登录(建议设置为no)
StrictModes yes 是否让sshd去检查用户主目录或相关文件的权限数据
MaxAuthTries 6 设置最大失败尝试登录次数(默认6)
RSAAuthentication yes 是否开启RSA密钥验证
PubkeyAuthentication yes 是否开启公钥验证
AuthorizedKeysFile .ssh/authorized_keys 是否允许用户自行使用成对的密钥系统进行登录(仅针对SSH2)
IgnoreUserKnownHosts no 是否忽略用户主目录内的~/.ssh/known_host这个文件所记录的主机内容
IgnoreRhosts yes
 
是否取消使用~/.ssh/.rhosts来作为认证
PasswordAuthentication yes 用来设置是否开启密码验证机制
PermitEmptyPasswords no

用来设置是否允许用密码为空的账号登录系统

ChallengeResponseAuthentication no 是否允许任何的密码认证
UsePAM yes 利用PAM管理用户认证,可以记录与管理

X11Forwarding yes

用来设置是否允许X11转发
X11DisplayOffset 10
 
指定X11 转发的第一个可用的显示区数字(默认10)
PrintMotd yes 登录后是显示/etc/motd这个文件的内容
PrintLastLog yes 是否显示上次登录的信息
TCPKeepAlive yes 是否判断对方一直存在连接
UsePrivilegeSeparation sandbox 是否使用较低权限的程序来提供用户操作
UseDNS yes 使用DNS去反查客户端的主机名

对sshd_config文件配置完毕,接着重启sshd守护进程,使修改生效

[root@centos7 ~]# systemctl restart sshd

1.5 SSH登录

(1)口令验证

ssh 服务端主机名@服务端IP地址

[root@CentOS7 ~]# ssh [email protected]

(2)密钥认证

        首先为自己创建一对密匙,并把公匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器

1)本地生成密钥对(公钥和私钥)

        所有提示均按Enter键,用默认的方法建立密钥对,执行完ssh-keygen后,会在用户主目录下的.ssh/目录下产生两把keys,分别是私钥(id_rsa)和公钥(id_rsa.pub).

2)将公钥文件上传到远端上

ssh-copy-id将本机的公钥复制到远程主机的authorized_keys文件中,ssh-copy-id也能让你有到远程主机的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利

3)连接远程主机(就不用输入用户名和密码)

 


 

猜你喜欢

转载自blog.csdn.net/weixin_43265596/article/details/86371457