首页 > 技术文章 > ssh配置

wufanblog 2020-08-12 08:38 原文

SSH由两部分组成:SSH服务端和SSH客户端。SSH的配置文件在/etc/ssh/目录下,其中服务端的配置文件是sshd_config,客户端的配置文件是ssh_config。

 

通过口令验证方式登录

vi/etc/ssh/sshd_config

 

Port22//默认使用22端口,也可以自行修改为其他端口,但登录时要打上端口号#ListenAddress//指定提供ssh服务的IP,这里注释掉。

PermitRootLogin//禁止以root远程登录

PasswordAuthenticationyes//启用口令验证方式

PermitEmptyPassword//禁止使用空密码登录

LoginGraceTime1m//重复验证时间为1分钟

MaxAuthTimes3//最大重试验证次数

保存修改好的配置,退出。

3.重启sshd服务service sshd restart

 

 

通过密钥对验证方式登录

ssh-keygen  -t rsa//生成密钥文件

ssh-copy-id -i  .ssh/id_rsa.pub   root@172.16.12.31发送密钥

修改sshd_config配置文件:#vim/etc/ssh/sshd_config

PasswordAuthentication no//禁用口令验证方式,不能把原有的PasswordAuthentication yes注释掉,注释后,就算没有公钥也能通过口令登录,这样不安全,而且失去了密钥验证的意义。

RSAAuthenticationyes//启用RSA验证

PubkeyAuthenticationyes//启用公钥验证

AuthorizedKeysFile.ssh/authorized_keys//启用公钥文件位置,后面的路径是设置公钥存放文件的位置

 

 

 

查看SSH客户端版本  ssh -v

ssh name@remoteserver或者ssh remoteserver -l name说明:以上两种方式都可以远程登录到远程主机,server代表远程主机,name为登录远程主机的用户名

 

ssh name@remoteserver -p 2222 或者ssh remoteserver -l name -p 2222说明:p 参数指定端口号,通常在路由里做端口映射时,我们不会把22端口直接映射出去,而是转换成其他端口号,这时就需要使用-p端口号命令格式。

 

ssh -t remoteserver1 ssh remoteserver2通过远程主机1跳到远程主机2

 

 

 

 

ssh -l name remoteserver ‘command’说明:连接到远程主机,并执行远程主机的command命令。例如:查看远程主机的内存使用情况。$ ssh -l root 192.168.1.10 svmon -G

 

 

进行端口映射:假如公司内网有台web服务器,但是只对内不对外,这样,外网就无法访问,可以用ssh进行端口映射来实现外网访问内网的web服务器。假如web服务器名为webserver,webserver可以用ssh访问到远端主机remoteserver,登录到webserver,然后用下面命令进行映射

命令格式:ssh -R 3000:localhost:80 remoteserver执行完成后,

在remoteserver机器上,执行netstat -an | grep 3000,查看有没有开通3000端口。

并执行以下命令观察是否可以打开webserver上的网页

$ w3m http://127.0.0.1:3000如果能打开界面,说明映射成功。

但是,这只限于本机访问web服务器,即只能remoteserver机器访问webserver。因为3000端口绑定的是remoteserver机器的127.0.0.1端口。可以编辑remoteserver机器上的/etc/ssh/sshd_config文件并添加如下内容:

添加GatewayPorts yes 内容,把监听端口3000绑定到0.0.0.0 地址上,这样外部的所有机器都能访问到这个监听端口,然后保存退出。并重启ssh服务。完成后其它机器就可以在浏览器中输入http://remoteserver:3000来访问webserver了。

10、设置登录时提示信息首先编辑一个文件,如bannertest.txt,文件内容自行定义。然后打开/etc/ssh/sshd_config文件并查找下面这样的行:#Banner /some/path

 

ssh自定义安全设置

 

1)为了ssh登陆的时候加一层保护,可以修改默认端口。

修改ssh服务配置文件/etc/ssh/sshd_configport 2222

这样远程连接时加端口号#ssh 192.168.1.10 -p 2222

 

2)ssh使用时加-l后面跟用户名,表示登陆到对方的这个用户下面。

#ssh -l any192.168.1.20-p 2222等同于#ssh any@192.168.1.20-p 2222

 

3)限制ssh登陆的来源ip,白名单设置(hosts.allow优先级最高)一是通过iptables设置ssh端口的白名单,如下设置只允许192.168.1.0/24网段的客户机可以远程连接本机

#vi /etc/sysconfig/iptables

-A INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 2222 -j ACCEPT二是通过/etc/hosts.allow里面进行限制(如下),/etc/hosts.deny文件不要任何内容编辑,保持默认!

#vim/etc/hosts.allow

sshd:192.168.1.*,192.168.9.*,124.65.197.154,61.148.60.42,103.10.86.7:allow

sshd:all:deny

 

4)仅允许特定的用户通过SSH登陆如不允许root用户登录;只允许几个指定的用户登录(比如any、admin、rootec用户)

禁止某些指定的用户登录(比如guest,kali用户)但是要注意:设置的这几个用户必须同时存在于本机和对方机器上修改ssh服务配置文件

/etc/ssh/sshd_configPermitRootLogin no //将yes修改为no

AllowUsers any adminrootec//这个参数AllowUsers如果不存在,需要手动创建,用户之间空格隔开DenyUsers guestkali//这个参数DenyUsers如果不存在,需要手动创建,用户之间空格隔开也可以设置仅允许某个组的成员通过ssh访问主机。AllowGroups wheel ops

 

5)取消密码验证,只用密钥对验证修改ssh服务配置文件/etc/ssh/sshd_config

PasswordAuthentication no

PubkeyAuthentication yes

6)给账号设置强壮的密码:将密码保存到文本进行复制和粘帖就可以了

# rpm -ivh expect-5.43.0-5.1.i386.rpm| yum -y install expect

# mkpasswd -l 128 -d 8 -C 15 -s 10 //将下面密码保存到文本进行复制、粘贴即可lVj.jg&sKrf0cvtgmydqo7qPotxzxen9mefy?ej!kcaX2gQrcu2ndftkeamllznx>iHikTagiVz0$cMtqOcIypkpd,vvD*kJhs3q@sb:CiCqgtqdqvse5lssfmranbtx

参数说明:-l 密码长度-d 多少个数字-C 大写字母个数-s 特殊符号的个数

 

7)只允许通过指定的网络接口来访问SSH服务,(如果本服务器有多个IP的时候)仍然是修改/etc/ssh/sshd_config,如下:ListenAddress 192.168.1.10//默认监听的是0.0.0.0这样,就只允许远程机器通过ssh连接本机的192.168.1.10内网ip来进行登陆了。

 

8)禁止空密码登录如果本机系统有些账号没有设置密码,而ssh配置文件里又没做限制,那么远程通过这个空密码账号就可以登陆了,这是及其不安全的!

所以一定要禁止空密码登陆。修改/etc/ssh/sshd_config,如下:

PermitEmptyPasswords no //这一项,默认就是禁用空密码登陆。

 

 

对SSH服务进行安全检查

root用户需要使用普通用户远程登录后su进行系统管理。

使用命令“cat /etc/ssh/sshd_config”查看配置文件

(1)检查是否允许root直接登录检查“PermitRootLogin ”的值是否为no

(2)检查SSH使用的协议版本检查“Protocol”的值

(3)检查允许密码错误次数(默认6次),超过后断开连接检查“MaxAuthTries”的值

加固方法:使用命令“vi /etc/ssh/sshd_config”编辑配置文件

(1)不允许root直接登录设置“PermitRootLogin ”的值为no

(2)修改SSH使用的协议版本设置“Protocol”的版本为2

(3)修改允许密码错误次数(默认6次)设置“MaxAuthTries”的值为3

 

推荐阅读