Linux中阶—远程接入ssh&sftp(八)

目录

 

SSH 登入认证

1、基于公钥的认证

2、基于口令的认证

查看SSH登入信息

SSH服务配置详解

SSH应用服务案例

案例1:ssh连接数超过限制

案例2:主机sshd互信配置


 

SSH 登入认证:

1、基于公钥的认证:

使用非对称加密秘钥对传输认证信息摘要

鉴权方式:RSAAuthentication 是否允许使用纯 RSA 公钥认证。仅用于SSH-1。默认值是"yes"。

PubkeyAuthentication是否允许公钥认证。仅可以用于SSH-2。默认值为"yes"

服务端:使用公钥 加密随机数+session key#Digest2  得到Digest1 ,哈希解密对比一样鉴权通过    

客户端:使用私钥 解密随机数+session key# Digest1 发服务端。

结论:只要客户端秘钥对没有变化,服务端anthorized_key没有变化,主机就能连接。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZKf6IGq6ZOD,size_20,color_FFFFFF,t_70,g_se,x_16

2、基于口令的认证:

使用非对称加密秘钥对传输密码

鉴权方式:PasswordAuthentication yes

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZKf6IGq6ZOD,size_20,color_FFFFFF,t_70,g_se,x_16

查看ssh 登入信息:

w [选项] #显示登陆系统的用户列表,并显示用户执行的指令,读取/var/run/utmp文件。

   -i    #显示地址,此为预设值

   -h    #不显示各栏位的标题信息列

   -s     #使用简洁格式列表

   -f    #显示FROM项,也就是远程主机名

last        #显示用户最近登录信息读取/var/run/wtmp文件

last -10    #显示最近10条

lastb       #登陆失败信息列表,读取/var/run/btmp文件

lastb -10   #显示最近10条

sshd 服务配置详解:

#####SSH Server 的整体设定############

Port 22 #port用来设置sshd监听的端口

ListenAddress 0.0.0.0 #监听的主机IP地址

Protocol 2 #设置协议版本为SSH1或SSH2,SSH1存在漏洞与缺陷,选择SSH2

#HostKey /etc/ssh/ssh_host_key #设置SSHversion 1使用的私钥

#HostKey /etc/ssh/ssh_host_rsa_key #设置SSHversion 2 使用的 RSA 私钥

#HostKey /etc/ssh/ssh_host_dsa_key #设置SSHversion 2 使用的 DSA 私钥

#KeyRegenerationInterval 1h #秘钥再生的间隔时间

#ServerKeyBits 1024 #服务器秘钥位

#LogLevel INFO #LogLevel用来设定sshd日志消息的级别

#############安全认证方面的设定##################

#Authentication #限制用户必须在指定的时限内认证成功,0表示无限制。默认值120 秒。

#LoginGraceTime 2m     #LoginGraceTime用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为妙

#PermitRootLogin yes   #PermitRootLogin用来设置能不能直接以超级用户ssh登录,root远程登录Linux很危险,建议注销或设置为no

#StrictModes yes       #StrictModes用来设置ssh在接收登录请求之前是否检查用户根目录和rhosts文件的权限和所有权,建议开启

#MaxAuthTries 6        #只允许输错几次密码

#MaxSessions 1000      # MaxStartups 默认设置是 10:30:60,意思是从第10个连接开始以30%的概率(递增)拒绝新连接,直到连接数达到60为止,建议大于等于1000。

#RSAAuthentication yes #RSAAuthentication用来设置是否开启RSA密钥验证,只针对SSH1

#PubkeyAuthentication yes #PubkeyAuthentication用来设置是否开启公钥验证,如果使用公钥验证的方式登录时,则设置为yes

#AuthorizedKeysFile .ssh/authorized_keys #AuthorizedKeysFile用来设置公钥验证文件的路径,与PubkeyAuthentication配合使用,默认值是".ssh/authorized_keys"。

#RhostsRSAAuthentication no #是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证)。仅用于SSH-1。这是通过在RSA认证成功后再检查 ~/.rhosts 或 /etc/hosts.equiv进行认证的。出于安全考虑,建议使用默认值"no"。

#HostbasedAuthentication no #这个指令与 RhostsRSAAuthentication 类似,但是仅可以用于SSH-2。

#IgnoreUserKnownHosts no #IgnoreUserKnownHosts用来设置ssh在进行RhostsRSAAuthentication安全验证时是否忽略用户的“/$HOME/.ssh/known_hosts”文件

#IgnoreRhosts yes #IgnoreRhosts用来设置验证的时候是否使用“~/.rhosts”和“~/.shosts”文件

#PasswordAuthentication yes #PasswordAuthentication用来设置是否开启密码验证机制,如果用密码登录系统,则设置yes

#PermitEmptyPasswords no #PermitEmptyPasswords用来设置是否允许用口令为空的账号登录系统,设置no

PasswordAuthentication yes #是否开启挑战响应身份验证

#ChallengeResponseAuthentication no #是否允许质疑-应答(challenge-response)认证

#KerberosAuthentication no #是否要求用户为PasswdAuthentication提供的密码必须通过Kerberos KDC认证,要使用Kerberos认证,服务器必须提供一个可以校验KDC identity的Kerberos servtab。默认值为no

#KerberosOrLocalPasswd yes #如果Kerberos密码认证失败,那么该密码还将要通过其他的的认证机制,如/etc/passwd

#KerberosTicketCleanup yes #设置是否在用户退出登录是自动销毁用户的ticket

#KerberosGetAFSToken no #如果使用AFS并且该用户有一个Kerberos 5TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个AFS token,并尝试传送 AFS token 给Server 端,默认为no

#KerberosUseKuserok yes

#GSSAPIAuthentication no #GSSAPIAuthentication 指定是否允许基于GSSAPI的用户认证,默认为no

#GSSAPICleanupCredentials yes #设置是否在用户退出登录是自动销毁用户的凭证缓存

#GSSAPIStrictAcceptorCheck yes

#GSSAPIKeyExchange no

UsePAM yes #设置是否通过PAM验证

#AllowTcpForwarding yes #设置是否允许允许tcp端口转发,保护其他的tcp连接

#GatewayPorts no 设置是否允许远程客户端使用本地主机的端口转发功能,出于安全考虑,建议禁止

#X11Forwarding no X11转发允许在SSH客户端上显示应用程序的图形部分,而逻辑程序依然在远程服务器上执行

#X11UseLocalhost yes

####登陆后的相关设定##############

#PrintMotd yes #设置sshd是否在用户登录时显示“/etc/motd”中的信息,可以选在在“/etc/motd”中加入警告的信息

#PrintLastLog yes #是否显示上次用户登录信息

#TCPKeepAlive yes #是否持续发送tcp包,维持连接,设置yes可以防止死连接

#UseLogin no #设置是否使用ssh服务端的login程序进行登录验证。默认值是"no"。

#UsePrivilegeSeparation yes #设置使用者的权限

#UsePrivilegeSeparation  #服务端通过创建非特权子进程处理接入请求的方法来进行权限分离

#PermitUserEnvironment no

#Compression delayed #连接超时断开连接:

#ClientAliveInterval 0 #设置一个以秒记得时长,如果超时这么长时间,没有收到客户端的任何数据,sshd将通过安全通道向客户端发送一个“alive”消息,并等候回答

#ClientAliveCountMax 3 #sshd在未收到任何客户端回应前最多允许发送多少个alive消息,到达这个上限后,sshd将强制断开连接,关闭会话

#ShowPatchLevel no #在连接ssh端口时,是否返回ssh的补丁版本信息

#UseDNS yes #是否使对远程主机名进行dns反向解析,以检查此主机名是否与其IP地址真实对应。

#PidFile /var/run/sshd.pid  #pid文件存放位置

#PermitTunnel no #是否允许隧道

#Banner none #登录之前显示在用户屏幕上,后面跟着文件位置

###################SFTP 服务设定####################

# 创建根目录

#root@tianshl:~# mkdir /sftp

# 设置属主及权限

#root@tianshl:~# chown root:root /sftp

#root@tianshl:~# chmod 755 /sftp

# 创建用户组

#root@tianshl:~# groupadd sftp

# 注释掉

# Subsystem sftp /usr/lib/openssh/sftp-server

# 使用系统默认的sftp服务

Subsystem sftp internal-sftp

# 匹配组名 sftp

Match Group sftp

# 指定活动目录

ChrootDirectory /sftp/%u

# 由ChrootDirectory指定的目录开始一直往上到系统根目录的目录属主都是root.

# 由ChrootDirectory指定的目录开始一直往上到系统根目录都不可以具有群组写入权限.

# 禁用端口转发

AllowTcpForwarding no

X11Forwarding no

# 强制执行内部SFTP,并忽略任何~/.ssh/rc中的命令

ForceCommand internal-sftp

#######访问控制############

#AllowUsers<用户名1> <用户名2> <用户名3> ...  #指定允许通过远程访问的用户,多个用户以空格隔开

#AllowGroups<组名1> <组名2> <组名3> ... #指定允许通过远程访问的组,多个组以空格隔开。当多个用户需要通过ssh登录系统时,可将所有用户加入一个组中。

#DenyUsers<用户名1> <用户名2> <用户名3> ... #指定禁止通过远程访问的用户,多个用户以空格隔开

#DenyGroups<组名1> <组名2> <组名3> ... #指定禁止通过远程访问的组,多个组以空格隔开。

SSH应用服务案例

案例1:ssh连接数超过限制

1、查看 /etc/pam.d/sshd配置,如下配置是否配置:
#session    required        pam_limits.so

2、查看/etc/security/limits.conf中maxlogins配置的值是多少:

#@student        -       maxlogins       512

3、查看/etc/ssh/sshd_config中MaxStartups的值:

#MaxSessions 1000      # MaxStartups 默认设置是 10:30:60,意思是从第10个连接开始以30%的概率(递增)拒绝新连接,直到连接数达到60为止,建议大于等于1000。

案例2:主机sshd互信配置

1.在客户端生成密钥对

[root@localhost ~]# ssh-keygen -t rsa       <## 建立密钥对,-t代表类型,有RSA和DSA两种

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):   <##密钥文件默认存放位置,按Enter即可

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase):     <## 输入密钥锁码,或直接按 Enter 留空

Enter same passphrase again:     <## 再输入一遍密钥锁码

Your identification has been saved in /root/.ssh/id_rsa.    <## 生成的私钥

Your public key has been saved in /root/.ssh/id_rsa.pub.    <## 生成的公钥

The key fingerprint is:

SHA256:K1qy928tkk1FUuzQtlZK+poeS67vIgPvHw9lQ+KNuZ4 root@localhost.localdomain

密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录,这里密钥锁码设置为空。完成上述步骤后,在 root 用户的家目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件,其中id_rsa 为私钥,id_rsa.pub 为公钥。

2.把公钥传输至远程服务器

这里的远程服务器是172.16.8.11

[root@localhost ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.8.11

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"

The authenticity of host '172.16.8.11 (172.16.8.11)' can't be established.

ECDSA key fingerprint is SHA256:IpS8Vw0F/Yxece36yQ9KhoIuxHFjSi/Ect/WHGxw//k.

ECDSA key fingerprint is MD5:03:85:10:9a:21:75:d6:f1:7a:6e:fd:a8:08:c5:ef:59.

Are you sure you want to continue connecting (yes/no)? yes     <## 是否继续连接,回答为yes 

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

root@172.16.8.11's password:    <##输入远程主机的密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@172.16.8.11'"

and check to make sure that only the key(s) you wanted were added.

123456789101112131415

3.测试

[root@localhost ~]# ssh 172.16.8.11

 

上一篇:Linux中阶—WEB服务器nginx(七)

下一篇:Linux中阶—文件服务vsftpd (九)

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当出现"connection closed by remote host"的错误提示时,通常是由于服务器端的TCP连接处于半打开状态,而客户端再次建立TCP连接时,服务器检测到这个半打开的连接并向客户端发送了一个置位RST的TCP报文,导致连接被远程主机关闭。\[1\]这种情况可能是之前连接过该主机,但再次连接时出现了错误。一般来说,这与防火墙没有太大关系,但也可能与防火墙有关(建议进行排查)。\[2\]另外,这个问题也可能是由于系统SSH终端连接数配置过小所导致的。可以查看虚拟机的MaxStartups参数,该参数默认设置为10:30:100,意思是从第10个连接开始以30%的概率递增地拒绝新连接,直到连接数达到100为止。\[3\]因此,可以尝试增大MaxStartups参数的值来解决这个问题。 #### 引用[.reference_title] - *1* *2* [Connection closed by foreign host](https://blog.csdn.net/qq_43408367/article/details/126145987)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [异常解决 Connection closed by foreign host](https://blog.csdn.net/weixin_43155696/article/details/123816099)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值