赞
踩
SSH (Secure Shell)安全外壳协议,专门为远程登录会话和其他网络服务提供安全的一种安全协议,就比如我们常见的Telnet协议和ftp协议,它们都是使用明文传输的,数据很容易遭到监听,也很容易受到中间人攻击,而ssh是一项创建在应用层和传输层的一种安全协议,在进行数据传输时,可以对传输的数据包进行加密处理。
(1) 版本号协商阶段,SSH目前包括 SSH1和SSH2两个版本, 双方通过版本协商确定使用的版本
(2) 密钥和算法协商阶段,SSH支持多种加密算法, 双方根据本端和对端支持的算法,协商出最终使用的算法
(3) 认证阶段,SSH客户端向服务器端发起认证请求, 服务器端对客户端进行认证
(4) 会话请求阶段, 认证通过后,客户端向服务器端发送会话请求
(5) 交互会话阶段 ,会话请求通过后,服务器端和客户端进行信息的交互
(1)基于口令的安全验证:经过账户和密码即可登录到目标主机
(2)基于密钥的安全验证:要先在本地生成“密钥对”后将公钥传送到服务端,进行一个匹配
安装:apt-get install ssh
默认端口:22
服务端主配置文件:/etc/ssh/sshd.conf
客服端主配置文件: /etc/ssh/ssh.conf
查看是否安装:server --status-all | grep ssh
所有配置文件解析放在最后
vim /etc/ssh/sshd.conf
端口改为2021
打开允许root用户登录
启用密码验证(如果启用了密钥验证,则需关闭此项)
改完记得重启ssh服务哦!!!
- systemctl enable sshd.conf //开机自启ssh服务
-
- systemctl stop sshd.conf //停止ssh服务
-
- systemctl restart sshd.conf //重启ssh服务
-
- systemctl status sshd.conf //查看ssh服务状态
输入密码之后就能登录上去了
这里看了下我的进程里多了个6010,是因为我们使用了Xshell连接而导致的。
把这条注释掉就好了,记得修改过配置文件后一点要重启服务!!!
我们退出Xshell后就没有6010这条进程了
通过修改/etc/hosts.allow和/etc/hosts.deny两个配置文件远程限制某个IP和某段IP地址允许或拒绝访问Linux SSH、FTP、telnet等服务,其中/etc/hosts.allow表示允许访问的IP,/etc/hosts.deny表示拒绝访问的IP,要记住hosts.deny这个文件的优先级高于hosts.allow。
在文件最下方添加这两条即可。
那我们来试试使用192.168.31.251这个ip能否进行访问, 是在同一网段的机器。
useradd -m user01 //创建一个user01用户及其用户家目录
vim /etc/ssh/sshd.conf
将 PasswordAuthentication yes和PermitRootLogin yes 注释点
将这两条的注释取消掉
增加这一条
使用
两台机器都使用ssh-keygen -t rsa 生成密钥,都直接回车就行
使用ssh user01@192.168.31.211 -p 19210进行连接
- # 常用
- Port 22 # 端口号
- AddressFamily any # 指定使用哪种地址协议(默认:any、仅IPv4:IPv4、仅IPv6:IPv6)
- ListenAddress 0.0.0.0 # 监听地址(0.0.0.0 表示所有地址)
- ListenAddress :: # 监听地址(IPv6 地址)
- Protocol 2 # 指定 SSH 的协议版本,1 或 2(如需同时支持两者,只需使用逗号分隔,如:1,2)
- LogLevel INFO # 日志等级(QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3)
- UserDNS no # 禁止DNS反向解析
-
- # 用户相关
- PermitRootLogin no # 禁止root用户登录
- PermitEmptyPasswords no # 禁止空密码用户登录
- LoginGraceTime 2m # 登录验证时间为2分钟
- MaxAuthTries 6 # 最大重试次数6次
- AllowUsers steven # 只允许 steven 用户登录
- DenyUsers steven # 不允许登录用户 steven
-
-
- # 验证
- PasswordAuthentication yes # 启用密码验证(如配置密钥登录,则需关闭此项)
- PubkeyAuthentication yes # 启用密匙验证
- RSAAuthentication yes # 使用 RSA 算法进行安全验证
- AuthorizedKeysFile .ssh/authorized_keys # 指定公钥数据库文件(用于密钥登陆)
- Host * # 有效的主机(多个主机可用空格隔, “*” 表示所有)
- ForwardAgent no # 连接是否经过代理验证(如果是)转发给远程计算机
- ForwardX11 no # 连接受否被自动重定向到安全的通道和显示集
- RhostsRSAAuthentication no # 不使用 RSA 算法基于 rhosts 的安全验证(仅 Version 1 版本使用)
- RSAAuthentication yes # 使用 RSA 算法进行安全验证
- PasswordAuthentication yes # 使用口令验证
- HostbasedAuthentication no # 与 RhostsRSAAuthentication 类似(Version2 使用)。
- GSSAPIAuthentication no # 是否允许使用基于 GSSAPI 的用户认证(默认值为 ”yes”,仅用于 Version2)
- BatchMode no # 如为 “yes“,passphrase/password(交互式输入口令)的提示将被禁止
- CheckHostIP yes # 设置 SSH 是否检查看连接到服务器的主机的 IP 地址以防止 DNS 欺骗(建议设置为 “yes“)
- AddressFamily any # 指定使用哪种地址协议(默认:any、仅IPv4:IPv4、仅IPv6:IPv6)
- ConnectTimeout 0 # 设置连接超时时间
- StrictHostKeyChecking ask # 如果设置为 ”yes“,则不会自动把计算机的密钥加入 ”HOME/.ssh/known_hosts" 文件,并且以一旦计算机的密钥发生了变化,就拒绝连接
- IdentityFile ~/.ssh/identity # 设置从哪个文件读取用户的 RSA 安全验证标识
- IdentityFile ~/.ssh/id_rsa
- IdentityFile ~/.ssh/id_dsa
- IdentityFile ~/.ssh/id_ecdsa
- IdentityFile ~/.ssh/id_ed25519
- Port 22 # 设置端口号
- Protocol 2 # 指定 SSH 的协议版本,1 或 2(如需同时支持两者,只需使用逗号分隔,如:1,2)
- Cipher 3des # 设置加密用的密码
- Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc # 指定 Version2 使用的加密算法(多个算法之间使用逗号分隔)
- MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160 # 制定允许在 Version2 中使用哪些消息摘要算法来进行数据校验
/etc/hosts.allow
sshd:10.1.82.18 //允许10.1.82.18这个网络能访问ssh服务
#sshd:10.1.82.* //允许10.1.82.*这个网段能访问ssh服务
#in.telnetd:10.1.82.18 //允许10.1.82.18这个ip能通过Telnet服务访问
#in.Telnetd:10.1.82.* //允许10.1.82.*这个网段能通过Telnet服务访问
#all:10.1.82.18 //允许这个ip地址能通过任何服务器远程登录到linux服务器
#all:10.1.82.* //类似
- /etc/hosts.deny
- sshd:all 禁止所有ip不能通过ssh登录linux服务器
- #in.telnet:all //禁止所有ip不能通过telnet登录linux服务器
- #all:all //禁止所有ip不能通过任何服务登录linux服务器
其实还有好多可以写的,但孩子我实在卷不动了实在是想睡觉了,就这样吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。