ssh服务器(超大型集群第五篇)

Linux服务之—ssh服务更多架构文章猛戳这里:超大型集群架构技术文档1. 什么是ssh? 1. ssh是建立在应用层上的安全远程管理协议,可为远程登录会话和其他网络服务提供安全性2. ssh的登录验证模式有哪些? 1. 账户密码验证
(1) 客户端向服务器发送请求连接
(2) 服务器发送公钥给客户端
(3) 客户端使用公钥加密账户密码并发送给服务器
(4) 服务器用私钥解密,获取到账户密码,与服务器本地的信息匹配才允许登录
2. 密钥对验证
(1) 首先需要在客户端创建一对密钥,并且需要把公钥放在需要访问的服务器上
(2) 客户端请求连接服务器时,需向服务器发送登录请求,请求使用密钥对中的公钥进行安全验证
(3) 服务端收到请求后,会在请求用户的家目录下查询公钥文件,并将客户端请求公钥与家目录下的进行对比
(4) 如果公钥一致的话,服务端会使用客户端公钥加密一串"质疑"信息,并发送给客户端,客户端收到后会使用本地的私钥进行解密,再使用服务端公钥加密再发给服务端,服务端验证成功则允许登录3. 用户登录验证 1. 账户密码登录
'ssh 用户名@IP地址'
ssh [email protected]

2. linux主机之间只是用密钥对验证登录,此时需要两台linux机器
'客户端: 192.168.5.3 client'
'服务端: 192.168.5.4 server'
# client配置
# 1. 首先在cliet生成密钥对文件
[root@client ~]# ssh-keygen -t rsa -b 2048
-t 指定加密类型
-b 指定密钥对加密长度
'输入此命令之后 会出现两条询问信息,解释走一波'
1. 密钥文件保存位置默认为用户家目录下的.ssh/目录下
2. 是否使用密码加密密钥对文件,加密时调用密钥文件需先使用密码,不加密则可直接使用

# 2. 将公钥文件上传至server(注意 使用下面的命令后,只针对于root有用)
'将自己的公钥上传至对方服务器的用户家目录下,即可使用此用户免密登录服务器'
[root@client .ssh]# ssh-copy-id [email protected] # 需输入yes,以及服务端root的密码

# 3. 直接使用client连接server
'密钥对验证优先级大于账户密码的优先级'
[root@client ~]# ssh [email protected] # 这个就相当于设置了免密码登录…

3. windows客户端使用xshell连接服务器
(1) xshell—工具—新建用户密钥生成导向—密钥类型(rsa)密钥长度(2048)—下一步—?
'此时上面的?号里面其实是是否给用户密钥加密,如果加密的话使用密钥对登陆时还需要密码验证'

(2) 将公钥导入到服务器的指定用户下的指定公钥配置文件—authorized_keys(此时先用root)
'如果上述文件没有,则需先新建此文件,另外公钥可以从xshell里面的用户密钥的属性里获取'

(3) 尝试使用xhell客户端进行登录,选择密钥登录即可4. sshd的几个小小配置内容 1. 禁止使用root远程登录
[root@client ~]# vim /etc/ssh/sshd_config
PermitRootLogin yes
# 将上述yes更改为no即可禁止使用密码登录,默认为yes
'禁用root登陆后,还可使用su、sudo等来临时获取root权限'

2. 禁止使用密码登录
[root@client ~]# vim /etc/ssh/sshd_config
PasswordAuthentication yes
# 将上述yes修改为no即可禁止使用密码登录,默认为yes

3. 修改默认端口、限制ssh监听ip
[root@client ~]# vim /etc/ssh/sshd_config
Port 50000 # 尽量修改一个高位端口(1-65535),默认为22
ListenAddress 192.168.5.1
'多网卡情况下可以使用监听内网ip,即别人不能通过另一个外网ip访问到本机'

# ssh [email protected] 100 # 修改ssh请求登录的端口为100
# ssh -p 100 [email protected] # 此条命令适用于linux5. ssh服务相关的命令 1. scp命令—-用于安全的远程文件复制命令(很常用!!!最起码初学常用)
# 主要用于linux下进行远程拷贝文件的命令,加密传输,可能会影响速度,但不会占用太多性能
scp 本地文件 用户名@服务器IP:目录

'默认情况下使用本条命令即可'
scp /root/init.sh [email protected]:/root/

'在更改过ssh端口号的情况下,需要使用-P来设置端口选项'
scp -P 100 /root/init.sh [email protected]:/root/

'scp传输限速处理'
# 限速默认单位为kb,如要限速10M,则 10*1024*8=81920
[root@server ~]# scp -P 100 -l 81920 1111.txt [email protected]:/tmp/

2. sftp—-安全的文件复制命令
# 跟scp基本上一模一样,,,不过会比scp更安全一些,自然传输效率也就比scp慢一些
sftp -oPort=100 [email protected] # 如果端口默认为22则不需要使用-oPort

'将文件上传到服务器'
put [本地文件的地址] [服务器上文件存储的位置]
# 将本地nginx文件上传到172.16.5.4/root/test
# sftp> put nginx.sh /root/test/

'将文件从服务器下载到客户端'
get [服务器上文件存储的位置] [本地要存储的位置]
# 将172.16.5.4/root/test/index.html文件下载到本地的/root/newnew.html
# sftp> get /root/test/index.html /root/newnew.html
6. TCP Wrappers(这是个什么东西) 1. Tcp_Wrapper是一个工作在传输层的安全工具,主要功能就是控制谁可以访问,常见的程序有vsftp,sshd,telnet等

2. Tcp_Wrapper的工作原理
以ssh为例,当有ssh请求连接时会先读取设置的访问控制文件,符合要求,则会把这此连接原封不动转给ssh进程,由ssh完成后续操作,如果不符合,则会终端连接请求

3. Tcp_Wrapper使用方法
'主要依靠两个配置文件/etc/hosts.allow和/etc/hosts.deny'
(1) # 拒绝单个IP使用ssh远程连接,需要在hosts.deny里面添加
sshd:192.168.1.1

(2) # 拒绝某一网段使用ssh远程连接,需要在hosts.deny里面添加
sshd:192.168.1.

(3) # 仅允许某一个ip使用ssh远程连接
hosts.allow: sshd:192.168.1.1
hosts.deny: sshd:ALL
'allow优先级大于deny,所以先允许192.168.1.1,接着拒绝所有'7. 补充内容 telnet(有时候测试会用到此命令) # 现在telnet主要就是用于测试网络以及端口连通性。。
'使用telnet不支持登录root用户'
[root@client ~]# yum -y install telnet
[root@client ~]# telnet 192.168.5.4 22
Trying 192.168.5.4…
Connected to 192.168.5.4.
Escape character is '^]'. ——-出现此状态则表示端口已打开
SSH-2.0-OpenSSH_7.4

# windows使用cmd窗口连接linux,其linux端需要安装telnet-server
1. linux端安装telnet-server(安装telnet服务端)
[root@server ~]# yum -y install telnet-server

2. linux端启动telnet-server
[root@server ~]# systemctl start telnet.socket

3. linux端创建用户并设置密码
[root@server ~]# useradd zhangsan
[root@server ~]# echo "123" | passwd zhangsan –stdin

4. windows端打开telnet服务(控制面板—卸载程序—启用或关闭windows功能—-勾选telnet客户端即可)

5. windows端打开cmd窗口

6. 输入 telnet 172.16.5.5 接着输入linux创建的用户名密码即可更多架构文章猛戳这里:超大型集群架构技术文档更多架构文章猛戳这里:超大型集群架构技术文档更多架构文章猛戳这里:超大型集群架构技术文档

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://kuaisubeian.cc/33578.html

kuaisubeian