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)连接远程主机(就不用输入用户名和密码)