Linux学习

参考资料

Blog SSH config file for OpenSSH client
Blog sshd_config - How to configure the OpenSSH server
Blog SSH 密钥登录

Server配置文件(sshd_config)

一般只是配置:

  1. 修改并增加端口(Port)
  2. 禁用密码登录,改用密钥

SSH 密钥登录

生成密钥

$ ssh-keygen -t rsa -b 4096 -f keyname -N password -C "your_email@domain.com"
  • -t:参数用于指定生成密钥的加密算法,一般为dsa或rsa。
  • -b:参数指定密钥的二进制位数。这个参数值越大,密钥就越不容易破解,但是加密解密的计算开销也会加大。
  • -f:参数指定生成的私钥文件的名称,可指定绝对路径。
  • -N:参数用于指定私钥的密码(passphrase)。
  • -C:参数可以为密钥文件指定新的注释,格式为username@host。

手动上传公钥

OpenSSH 规定,用户公钥保存在服务器的/.ssh/authorized_keys(authorized_keys已经是文件名,并不是文件夹)文件。你要以哪个用户的身份登录到服务器,密钥就必须保存在该用户主目录的/.ssh/authorized_keys文件。只要把公钥添加到这个文件之中,就相当于公钥上传到服务器了。每个公钥占据一行。如果该文件不存在,可以手动创建。

关闭密码登录

修改 sshd_config 文件

$ nano /etc/ssh/sshd_config




# 如果要完全禁用基于密码的身份验证,请将 PasswordAuthentication 和 ChallengeResponseAuthentication 都设置为 no
PasswordAuthentication no
#PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# 修改完成后按 Ctrl+X ,接着 Y,最后按回车

查看 ssh 状态

$ systemctl restart ssh
$ systemctl status ssh

禁止或允许某些用户或某IP(段)的客户端访问

Blog:Linux限制某些用户或IP登录SSH、允许特定IP登录SSH

限制用户SSH登录

只允许指定用户进行登录(白名单):

在/etc/ssh/sshd_config配置文件中设置AllowUsers选项,(配置完成需要重启 SSHD 服务)格式如下:

AllowUsers    aliyun test@192.168.1.1            
# 允许 aliyun 和从 192.168.1.1 登录的 test 帐户通过 SSH 登录系统。

只拒绝指定用户进行登录(黑名单):

在/etc/ssh/sshd_config配置文件中设置DenyUsers选项,(配置完成需要重启SSHD服务)格式如下:

DenyUsers    zhangsan aliyun    #Linux系统账户        
# 拒绝 zhangsan、aliyun 帐户通过 SSH 登录系统

重启SSH

service sshd restart

限制IP SSH登录

配置 iptables(重点难点)

配置 hosts

说明:这里的IP是指客户端IP,不是服务器IP,下面的例子使用了hosts.allow文件的配置方式,目的是快,但也有不灵活的,建议改成iptables的方案。

除了可以禁止某个用户登录,我们还可以针对固定的IP进行禁止登录,linux 服务器通过设置/etc/hosts.allow和/etc/hosts.deny这个两个文件,hosts.allow许可大于hosts.deny可以限制或者允许某个或者某段IP地址远程 SSH 登录服务器,方法比较简单,且设置后立即生效,不需要重启SSHD服务,具体如下:

/etc/hosts.allow添加

sshd:192.168.0.1:allow  #允许 192.168.0.1 这个IP地址SSH登录
sshd:192.168.0.:allow #允许192.168.0.1/24这段IP地址的用户登录,多个网段可以以逗号隔开,比如192.168.0.,192.168.1.:allow

/etc/hosts.allow添加

sshd:ALL #允许全部的ssh登录 
hosts.allow和hosts.deny两个文件同时设置规则的时候,hosts.allow文件中的规则优先级高,按照此方法设置后服务器只允许192.168.0.1这个IP地址的SSH登录,其它的IP都会拒绝。

/etc/hosts.deny添加

sshd:ALL #拒绝全部IP

针对hosts.deny的参考:http://www.cnblogs.com/EasonJim/p/8338931.html

扩展应用

保护 SSH

SSH 端口转发(SSH隧道)

Blog:SSH 端口转发
视频:SSH 隧道技术
视频:SSH 动态隧道 Windows和Linux应用
视频:SSH 动态隧道配合ProxyChains
视频:用SShuttle建立最好用的SSH动态隧道

本地转发(Local port forwarding)

SSH隧道-正向本地转发

远程转发(Remote port forwarding)

SSH隧道-反向远程转发

动态转发

SSH隧道-动态转发

SSH 证书登录

原文地址:https://www.cnblogs.com/zxaben/p/14860247.html