文章目录
- 安装SSH
- ssh解析
- UseDNS配置 —— PTR反向查询流程
- 服务端步骤
安装SSH
apt-get remove ssh*
apt-get install ssh
service ssh restart
rm /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server
passwd(设置密码输入两次)
vi /etc/ssh/sshd_config
添加PermitRootLogin yes
/etc/init.d/ssh restart
ssh解析
OpenSSH(即常说的ssh)的常用配置文件有两个/etc/ssh/ssh_config和sshd_config。
ssh_config为客户端配置文件,设置与客户端相关的应用可通过此文件实现
sshd_config为服务器配置文件,设置与服务器相关的应用可通过此文件实现。
一般来说我们常用的都是sshd_config配置文件。
注:文件中有很多选项前面加有“#”注释,虽然表示不起作用,其实是说明此为系统默认的初始化设置。“# ”(#加空格)开头的是注释信息
// 查看/etc/ssh/ssh_config配置文件
// "Host"只对匹配后面字串的计算机有效,“*”表示所有的计算机。从该项格式前置一些可以看出,这是一个类似于全局的选项,表示下面缩进的选项都适用于该设置,可以指定某计算机替换*号使下面选项只针对该算机器生效。
Host *
// "ForwardAgent"设置连接是否经过验证代理(如果存在)转发给远程计算机。
# ForwardAgent no
// "ForwardX11"设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。
# ForwardX11 no
# ForwardX11Trusted yes
// "PasswordAuthentication"设置是否使用口令验证。
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no
// "CheckHostIP"设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为"yes"。
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
// "StrictHostKeyChecking"如果设为"yes",ssh将不会自动把计算机的密匙加入"$HOME/.ssh/known_hosts"文件,且一旦计算机的密匙发生了变化,就拒绝连接。
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
// "Port"设置连接到远程主机的端口,ssh默认端口为22。
# Port 22
# Protocol 2
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
# MACs hmac-md5,hmac-sha1,umac-64@openssh.com
// “EscapeChar”设置escape字符。
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
// 查看/etc/ssh/sshd_config配置文件(介绍部分配置,没有全贴出来)
// "Port"设置sshd监听的端口号。
#Port 22
// "ListenAddress”设置sshd服务器绑定的IP地址。
#ListenAddress 0.0.0.0
// "HostKey”设置包含计算机私人密匙的文件。
#HostKey /etc/ssh/ssh_host_rsa_key
// "LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。
#LoginGraceTime 2m
// "PermitRootLogin”设置是否允许root通过ssh登录。这个选项从安全角度来讲应设成"no"。
PermitRootLogin yes
// "IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。
#IgnoreRhosts yes
// "IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的"$HOME/.ssh/known_hosts”
#IgnoreUserKnownHosts no
// "StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。
#StrictModes yes
// "X11Forwarding”设置是否允许X11转发。
X11Forwarding yes
// "PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。
PrintMotd no
// "SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。
#SyslogFacility AUTH
// "LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。
#LogLevel INFO
// "PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。
#PermitEmptyPasswords no
// 一般来说为了要判断客户端来源是否正常合法,因此会使用DNS去反查客户端的主机名。但通常在内网互连时,设置为no,使连接快写。
#UseDNS yes
// 显示上次登录信息。默认为yes
#PrintLastLog yes
// 是否使用密码验证。当然也可以设置为no,不使用密码验证,转而使用密钥登录
#PasswordAuthentication yes
UseDNS配置 —— PTR反向查询流程
通常情况下我们在连接 OpenSSH服务器的时候假如 UseDNS选项是打开的话,服务器会先根据客户端的 IP地址进行 DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,并验证是否与原始 IP地址一致,通过此种措施来防止客户端欺骗。平时我们都是动态 IP不会有PTR记录,所以打开此选项也没有太多作用。我们可以通过关闭此功能来提高连接 OpenSSH 服务器的速度。
服务端步骤
编辑配置文件 /etc/ssh/sshd_config
vim /etc/ssh/sshd_config 找到 UseDNS选项,如果没有注释,将其注释
#UseDNS yes
添加
UseDNS no
找到 GSSAPIAuthentication选项,如果没有注释,将其注释
#GSSAPIAuthentication yes
添加
GSSAPIAuthentication no
保存配置文件
重启 OpenSSH服务器 /etc/init.d/sshd restart