SSH详解-2.ssh基本用法

SSH详解-2.ssh基本用法,第1张

SSH详解-1ssh基础知识
SSH详解-2ssh基本用法
SSH详解-3密钥登陆
SSH详解-4多个ssh公钥

OpenSSH 的客户端是二进制程序 ssh,Linux 系统一般都自带 ssh。新版的win10开启ssh服务,但不是很好用,可以使用一些好用的软件 Xshell 、 Putty 等

安装OpenSSH 以后,可以使用 -V 参数输出版本号,查看一下是否安装成功。
ubuntu

windows

ssh最常用的用途就是登录服务器,当然这需要服务器再运行着sshd。
ssh 登录服务器的命令如下,例如连接局域网内一台ip地址为192168198的主机

上面命令中,root是用户名,@后面的是主机名,它可以是域名,也可以是 IP 地址或局域网内部的主机名。

用户名也可以使用ssh的 -l 参数指定,这样的话,用户名和主机名就不用写在一起了。

ssh 默认连接服务器的22端口, -p 参数可以指定其他端口。

上面命令连接服务器192168198的8888端口,这里没有指定用户名。将使用客户端的当前用户名,作为远程服务器的登录用户名。

刚刚应该注意到这段话了,这段话是什么意思呢?

上面这段话的意思是192168198这个服务器的指纹是陌生的,是否要继续连接(输入 yes or no )。

接下来,输入 yes 后ssh会将当前服务器的指纹存储在本机 ~/ssh/known_hosts 文件中。以后再连接的时候,就不会再出现警告了。
也就是说,ssh通过判断当前服务器公钥的指纹是否存在于~/ssh/known_hosts文件中,来判断是否为陌生主机

然后,客户端就会跟服务器建立连接。
接着,ssh 要求用户输入所要登录账户的密码,用户输入密码验证成功后就可以使用远程shell了。

ssh(1) - OpenBSD manual pages

用主机去连接虚拟机报了一下错误:

首先确定密码没有问题
其次发现我第一次连接可以连,第二天要连接连接不上去
解决方法:
第一,我用ip可能冲突的方法,更改了dns服务器,重启了服务器,但是ip没有变,还是没有解决问题
sshd的设置不允许root用户用密码远程登录修改 vim /etc/ssh/sshd_config修改:
1、将PermitRootLogin no改成PermitRootLogin yes
2、service sshd restart

在连接远程SSH服务的时候,经常会发生长时间后的断线,或者无响应(无法再键盘输入)。

总体来说有两个方法:

1、依赖ssh客户端定时发送心跳。

putty、SecureCRT、XShell都有这个功能,但是并不保险。

此外在Linux下:

#打开

sudo vim /etc/ssh/ssh_config

# 添加

ServerAliveInterval 20

ServerAliveCountMax 999                                                                                                  即每隔20秒,向服务器发出一次心跳。若超过999次请求,都没有发送成功,则会主动断开与服务器端的连接。

2、更一劳永逸的方法是:更改服务器端,即在ssh远端。

# 打开

sudo vim/etc/ssh/sshd_config

# 添加

ClientAliveInterval 30

ClientAliveCountMax 6

ClientAliveInterval表示每隔多少秒,服务器端向客户端发送心跳,是的,你没看错。

下面的ClientAliveInterval表示上述多少次心跳无响应之后,会认为Client已经断开。

所以,总共允许无响应的时间是603=180秒。

测试有效

SSH自动断开连接的原因

sshd会自动掉线,而ping是基于icmp协议的,只要没有阻断icmp的策略理论上就可以ping

SSH(Secure Shell)是常用的安全的远程控制协议,由于之前常用Telnet协议并不安全,目前SSH已经取代它成为远程控制协议中的主流。

OpenSSH是应用SSH协议的开源远程控制软件,除了默认的用户名+密码认证验证方式以外,OpenSSH还可以使用基于秘钥对(key pair)或者基于主机身份(Host-based)的验证方式。

关于如何基于秘钥对进行SSH身份验证网上有非常多的资料,而关于如何基于主机身份进行SSH身份验证的资料则比较混乱,本文就以作者最近的实践为例加以说明。

这次实验共有2台Linux,客户端主机名是mycentos,IP地址是192168125;服务器端主机名是woocentos7,IP地址是19216816。

服务器端和客户端都要修改SSH配置文件以支持主机身份验证,服务器端需要修改/etc/ssh/sshd_config文件,将HostbasedAuthentication项改为yes,IgnoreRhosts项改为no;客户端需要修改/etc/ssh/ssh_config文件,将HostbasedAuthentication项改为yes,EnableSSHKeysign项改为yes。服务器端修改配置文件以后,需要重启sshd服务使修改后的配置生效,命令是systemctl restart sshd。

服务器端还需要在/etc/hostsequiv配置文件中增加客户端的主机名,在root用户的~/shosts文件中增加客户端的主机名与对应的用户名(root,两项之间用空格隔开),在/etc/ssh/ssh_known_hosts文件中增加客户端的主机公钥信息,格式如下:

mycentos,192168125 ecdsa-sha2-nistp256 AAAAE2VjZ……KO8WzOJo=

其中“mycentos,192168125”是客户端的主机名和IP地址(这样不论是通过主机名还是IP地址都可以找到对应的公钥信息),“ecdsa-sha2-nistp256”是公钥类型,“AAAAE2VjZ……KO8WzOJo=”是具体的公钥内容。可以通过执行ssh-keyscan -t ecdsa 192168125 >>/etc/ssh/ssh_known_hosts命令完成 *** 作。

做完以上的 *** 作,理论上客户端就可以通过验证主机身份的方式用ssh登录服务器端了,不过仍需注意几点:

1、服务器端最好关闭SELinux,如setenforce 0以免影响正常登录,关闭SELinux后如果客户端仍然无法登录,可以重启服务器端sshd服务。注意:不关闭SELinux应该也是可以实现主机认证的功能的,但是因为时间关系,作者并没有再尝试。

2、服务器端和客户端的/etc/hosts文件中应该有对端的主机IP地址解析,以免提示解析错误。

3、服务器端和客户端的用户配置要保持一致。

4、客户端登录时不用添加用户名,使用其他用户登录(非当前Shell用户)时依然会提示输入密码,也就失去了主机认证的意义。

5、客户端登录时可执行ssh -v server_name|server_IP或者ssh -vvvvv server_name|server_IP命令,能够显示登录过程中的详细协商过程和传递参数,对于出现异常时排错非常有用。

您好,phpssh2卡死是一种常见的问题,它可能是由于您的服务器环境出现了问题导致的,因此您需要通过检查您的服务器环境来解决这个问题。您可以检查您的php版本,检查您的ssh2扩展是否正确安装,检查您的服务器是否正确配置,以及检查您的服务器是否有其他的程序正在运行,以及您的服务器是否有其他的程序正在占用您的资源。如果您检查了所有这些,但仍然无法解决phpssh2卡死的问题,您可以尝试重新安装phpssh2扩展,或者您可以尝试更新您的php版本。希望以上信息能够帮助您解决phpssh2卡死的问题。

配置文件 /etc/ssh/sshd_config

/etc/ssh/

以密码认证方式登录到远程服务器(ssh服务端)
条件:
服务端有root用户
服务端开启了sshd服务,默认监听端口为22
客户端有个ssh客户端服务器

此时,当前用户的家目录 ssh 目录下就会有密钥对

公钥用于非密码认证方式时,传送给对方,作为信任的凭据。私钥会保存到本地

假如第一次链接会得到一个提示。
大致的意思就是,要不要信任ssh服务端的公钥。信任输入yes
此时,客户端回把服务端的公钥放在当前目录下的 ssh/known_hosts
文件中一行一个主机。

服务端设置 /etc/sshd_config

重启服务

检查监听端口

客户端连接

1延续上面的实验继续。
客户端需要发送自己的公钥给服务端,服务端接收后会保存在用户家目录中的ssh/authorized_keys文件中
验证登录
ssh root@100122133

假如指定端口

拷贝服务端文件到客户端
scp root@100122133:/tmp/local_filetxt
(注意最后的点 )
指定端口 -P 2222

ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件。两个配置文件都允许你通过设置不同的选项来改变客户端程序的运行方式。下面列出来的是两个配置文件中最重要的一些关键词,每一行为“关键词&值”的形式,其中“关键词”是忽略大小写的。

1、编辑 /etc/ssh/ssh_config 文件

Host
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
FallBackToRsh no
UseRsh no
BatchMode no
CheckHostIP yes
StrictHostKeyChecking no
IdentityFile ~/ssh/identity
Port 22
Cipher blowfish
EscapeChar

下面对上述选项参数逐进行解释:

带“#”表示该句为注释不起作,该句不属于配置文件原文,意在说明下面选项均为系统初始默认的选项。说明一下,实际配置文件中也有很多选项前面加有“#”注释,虽然表示不起作用,其实是说明此为系统默认的初始化设置。

Host
"Host"只对匹配后面字串的计算机有效,“ ”表示所有的计算机。从该项格式前置一些可以看出,这是一个类似于全局的选项,表示下面缩进的选项都适用于该设置,可以指定某计算机替换 号使下面选项只针对该算机器生效。

ForwardAgent no
"ForwardAgent"设置连接是否经过验证代理(如果存在)转发给远程计算机。

ForwardX11 no
"ForwardX11"设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。

RhostsAuthentication no
"RhostsAuthentication"设置是否使用基于rhosts的安全验证。

RhostsRSAAuthentication no
"RhostsRSAAuthentication"设置是否使用用RSA算法的基于rhosts的安全验证。

RSAAuthentication yes
"RSAAuthentication"设置是否使用RSA算法进行安全验证。

PasswordAuthentication yes
"PasswordAuthentication"设置是否使用口令验证。

FallBackToRsh no
"FallBackToRsh"设置如果用ssh连接出现错误是否自动使用rsh,由于rsh并不安全,所以此选项应当设置为"no"。

UseRsh no
"UseRsh"设置是否在这台计算机上使用"rlogin/rsh",原因同上,设为"no"。

BatchMode no
"BatchMode":批处理模式,一般设为"no";如果设为"yes",交互式输入口令的提示将被禁止,这个选项对脚本文件和批处理任务十分有用。

CheckHostIP yes
"CheckHostIP"设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为"yes"。

StrictHostKeyChecking no
"StrictHostKeyChecking"如果设为"yes",ssh将不会自动把计算机的密匙加入"$HOME/ssh/known_hosts"文件,且一旦计算机的密匙发生了变化,就拒绝连接。

IdentityFile ~/ssh/identity
"IdentityFile"设置读取用户的RSA安全验证标识。

Port 22
"Port"设置连接到远程主机的端口,ssh默认端口为22。

Cipher blowfish
“Cipher”设置加密用的密钥,blowfish可以自己随意设置。

EscapeChar
“EscapeChar”设置escape字符。

2、编辑 /etc/ssh/sshd_config 文件:

下面逐行说明上面的选项设置:

Port 22
"Port"设置sshd监听的端口号。

ListenAddress 19216811
"ListenAddress”设置sshd服务器绑定的IP地址。

HostKey /etc/ssh/ssh_host_key
"HostKey”设置包含计算机私人密匙的文件。

ServerKeyBits 1024
"ServerKeyBits”定义服务器密匙的位数。

LoginGraceTime 600
"LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。

KeyRegenerationInterval 3600
"KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。

PermitRootLogin no
"PermitRootLogin”设置是否允许root通过ssh登录。这个选项从安全角度来讲应设成"no"。

IgnoreRhosts yes
"IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。

IgnoreUserKnownHosts yes
"IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的"$HOME/ssh/known_hosts”

StrictModes yes
"StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。

X11Forwarding no
"X11Forwarding”设置是否允许X11转发。

PrintMotd yes
"PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。

SyslogFacility AUTH
"SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。

LogLevel INFO
"LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。

RhostsAuthentication no
"RhostsAuthentication”设置只用rhosts或“/etc/hostsequiv”进行安全验证是否已经足够了。

RhostsRSAAuthentication no
"RhostsRSA”设置是否允许用rhosts或“/etc/hostsequiv”加上RSA进行安全验证。

RSAAuthentication yes
"RSAAuthentication”设置是否允许只有RSA安全验证。

PasswordAuthentication yes
"PasswordAuthentication”设置是否允许口令验证。

PermitEmptyPasswords no
"PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。

AllowUsers admin #限定登录的用户名
"AllowUsers”的后面可以跟任意的数量的用户名的匹配串,这些字符串用空格隔开。主机名可以是域名或IP地址。

服务端步骤如下:
编辑配置文件 /etc/ssh/sshd_config
vim /etc/ssh/sshd_config
找到 UseDNS选项,如果没有注释,将其注释

添加
UseDNS no

找到 GSSAPIAuthentication选项,如果没有注释,将其注释

添加
GSSAPIAuthentication no

保存配置文件

重启 OpenSSH服务器
/etc/initd/sshd restart

注意:

port 22

port 2345

参考:>

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10674565.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存