首页 > 编程知识 正文

ssh连不上linux服务器,ssh 连接命令

时间:2023-05-06 18:37:00 阅读:30724 作者:4941

本文已同步到个人博客: Liao si ' s blog----使用SSH连接到Linux服务器1 .什么是SSH? 简单来说,安全shell (ssh )是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机使用SSH协议登录到另一台远程计算机,则该登录可能是安全的,即使中途被拦截也不会泄露密码。 最初的时候,网络通信是明码通信。 例如,Telnet、FTP是明文的方式。 一旦被拦截,内容就会变得清楚。 1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为网络安全的基本解决方案,迅速在全球推广,现已成为Linux系统的标准配置。

sh只是一个协议,有各种各样的实现,有业务实现和开源实现。 本文的所有内容都基于OpenSSH。 这是SSH协议的免费开源实现,使用非常广泛。 Linux通常附带OpenSSH,您可以使用SSH -V查看系统正在使用的SSH客户端和版本信息。 默认的ssh服务端口号为22。

[ Hadoop @ server 04~~ ]使用$ ssh-vopenssh _6.6.1P1,OpenSSL1.0.1e-FIP S11 feb 2013 rpm-QA|grep ssh,将sh导入计算机

如果需要安装,可以从yum安装。 (在安装过程中,您将被迫输入y/n。 输入y就可以了。 )

在sudoyuminstallopenSSH-clientssudoyuminstallopenSSH-server windows系统上使用ssh时,安全、安全性、ssh安全外壳、XShell

1 .中间人攻击SSH之所以安全,是因为采用了公钥加密。

整个过程如下

远程主机从用户接收登录请求,并将自己的公钥发送给用户。 用户使用此公钥加密登录密码,然后将其发回。 远程主机使用自己的私钥解密登录密码,如果密码正确,则接受用户的登录。 此过程本身是安全的,但如果在实现时拦截登录请求的人冒充远程主机,并将伪造的公钥发送给用户,则用户可能难以确定真伪。 因为与https协议不同,SSH协议的公钥没有证书中心(CA )的公证,也就是说都是自己颁发的。

如果攻击者被插入在用户和远程主机之间(例如,公共wifi区域),则可以考虑使用伪造的公钥来获取用户的登录密码。 如果使用此密码登录远程主机,SSH安全机制将会丢失。 这一风险来自著名的' http://www.Sina.com/' (man-in-the-middle attack )。

2 .只能在打开SSH服务的情况下打开SSH服务,才能远程登录、连接和管理服务器。 关闭SSH服务后,远程连接客户端将无法连接到服务,但已连接的客户端仍然可用。

默认情况下,Linux系统在启动时启动SSH服务。 与安装mysql后启动时启动的服务类似。 例如,在CentOS 7_64位系统上,可以使用以下命令启动SSH服务的关闭:

执行命令

系统开始sshd.service或

service SSHd status可以确定ssh服务是否已启动。 (在centOS 5上可以使用命令/etc/init.d/ssh status (http://www.Sina.com /表示ssh服务已启动)。

中间人攻击表示SSH服务已终止

通过运行systemctl start SSHd.service或service sshd start命令启动ssh服务。

运行命令systemctl stop SSHd.service或service sshd stop以启动ssh服务。

通过运行systemctl restart SSHd.service或service sshd restart命令重新启动ssh服务。

将systemctl enable sshd.service或service sshd enable命令设置为自动启动服务。

2.SSH远程登录ssh远程登录安全shell协议有两种验证机制。

密码认证公钥认证1 .密码认证假设您使用用户名user登录到远程主机host。 简单的命令就可以了。

$ ssh user@host示例:如果ssh hadoop@192.168.0.10本地用户名与远程用户名匹配,则登录时可以省略用户名。

$ ssh host SSH的默认端口为22。 这意味着登录请求将发送到远程主机上的22个端口。 p参数允许您更改此端口。

$ ssh -p 2222 user@host以上命令表明ssh直接连接到远程主机上的2222端口。

如果您是第一次登录对方主机,系统将显示如下

提示:

  $ ssh user@hostThe authenticity of host 'host (12.18.429.21)' can't be established.RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.Are you sure you want to continue connecting (yes/no)?

这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?
所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再进行比较,就容易多了。
很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。
假定经过风险衡量以后,用户决定接受这个远程主机的公钥。

Are you sure you want to continue connecting (yes/no)? yes

系统会出现一句提示,表示host主机已经得到认可。

Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.

然后,会要求输入密码。

Password: (enter password)

如果密码正确,就可以登录了。
当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。
每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。

2.密钥验证

使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。

关于这种免密登录的原理,在 https://www.digitalocean.com/... 上有一段解释:

To authenticate using SSH keys, a user must have an SSH key pair on their local computer. On the remote server, the public key must be copied to a file within the user's home directory at ~/.ssh/authorized_keys. This file contains a list of public keys, one-per-line, that are authorized to log into this account.
When a client connects to the host, wishing to use SSH key authentication, it will inform the server of this intent and will tell the server which public key to use. The server then check its authorized_keys file for the public key, generate a random string and encrypts it using the public key. This encrypted message can only be decrypted with the associated private key. The server will send this encrypted message to the client to test whether they actually have the associated private key.
Upon receipt of this message, the client will decrypt it using the private key and combine the random string that is revealed with a previously negotiated session ID. It then generates an MD5 hash of this value and transmits it back to the server. The server already had the original message and the session ID, so it can compare an MD5 hash generated by those values and determine that the client must have the private key.

大致的过程是:
当客户端希望通过SSH KEY 鉴权登录时,它会告诉服务端,并附带上自己的公钥KEY信息。服务端检查它的KEY文件,同时生成一个随机串,并且用公钥加密。加密过的随机串,只有客户端用自己的私钥才可以解。
一旦收到消息,客户端将用自己的私钥解密,获取到随机串,同时,将先前跟服务端商定的SESSIONID一起,再次做MD5一致性HASH(md5(randomKey,sessionId),发回给服务端。服务端也按同样的方式生成摘要,如果两者一致,则验证通过。

假设现在有两台Linux服务器 A 和 B,如何配置主机之间的免密ssh登陆?
第一步:在 A 的$HOME/.ssh/目录下,有两个文件:id_rsa.pub和id_rsa。前者是当前服务器当前用户的公钥,后者是当前服务器当前用户的私钥。如果没有,则使用如下命令生成密钥对:

`ssh-keygen -t rsa` 或者 `ssh-keygen` (默认就是ras加密算法)

运行上面的命令以后,系统会出现一系列提示,可以一路回车。

再输入下面的命令,将公钥传送到远程主机host上面:

ssh-copy-id

此后从A登录到,就不需要输密码了。

关于ssh-copy-id命令

作用:可以把本地主机的公钥复制到远程主机的authorized_keys文件上,也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。语法:ssh-copy-id [-i [identity_file]] [user@]machine

实例:

ssh-copy-id server02ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

三.SCP进行跨机器拷贝

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。dmdqb服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。

1.命令格式:

scp [参数] [原路径] [目标路径]

2.命令功能:

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。

3.使用实例:

scp命令的实际应用概述:
从本地服务器复制到远程服务器:

复制文件:

命令格式:

scp local_file remote_username@remote_ip:remote_folderscp local_file remote_username@remote_ip:remote_filescp local_file remote_ip:remote_folderscp local_file remote_ip:remote_file

第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名
第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名

复制目录:

命令格式:

scp -r local_folder remote_username@remote_ip:remote_folderscp -r local_folder remote_ip:remote_folder

第1个指定了用户名,命令执行后需要输入用户密码;
第2个没有指定用户名,命令执行后需要输入用户名和密码;

注意:remote_folder是一个远程主机上已经存在的文件夹,如果不存在则报错,remote_file是本地文件复制到远程主机上的后新文件名,可以和原文件名不一样。

从远程服务器复制到本地服务器:
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
例如:

scp root@server01:/home/root/data/abc.txt /home/space/data/123.txtscp -r server01:/home/root/data/ /home/space/data/ 四.SFTP

sftp是Secure File TransferProtocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp与 ftp有着几乎一样的语法和功能。SFTP为 SSH的一部分,是一种传输档案至Blogger伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

1.连接方式

常用的方式有两种,一种直接采用sftp连接远端服务器IP,另一种则先登录远程服务器,在开启sftp功能

sftp [remotehost IP ]

通过sftp连接[host],端口为默认的22,用户为Linux当前登录用户。

sftp -oPort=[port][remotehost IP]

通过sftp连接远程服务器,指定端口[port],用户为Linux当前登录用户。

sftp[user]@[remotehost IP]

通过sftp连接远程服务器,端口为默认的22,指定用户[user]。
![]()

sftp -oPort=[port][user]@[ remotehost IP]

通过sftp连接[remotehost IP],端口为[port],用户为[user]。

通过Xshell5与linux建立连接后,在图形用户面板上
可以直接打开一个图形化sftp窗口

2.基本操作命令

首先可以查询该FTP给我们提供了那些基本命令,就输入:help命令,就帮我们显示
该FTP提供所有的命令

pwd:查询linux主机所在目录(也就是远程主机目录)lpwd:查询本地目录ls:查询连接到当前linux主机所在目录有哪些文件lls:查询当前本地上传目录有哪些文件lcd:改变本地上传目录的路径cd:改变远程上传目录get:将远程目录中文件下载到本地目录put:将本地目录中文件上传到远程主机(linux)put:后面可以接本地文件的绝对路径,也可以回车后弹出选择文件的窗口。quit:断开FTP连接rename:搬移或重命名一个的远程服务器文件rm:删除一个文件rmdir:在远程服务器上删除一个目录删除一个目录

sftp 还是 scp 来传输?如果ssh没有配置免登陆,scp会经常要输入密码比较麻烦,所以sftp更方便点。

本文参考:
http://www.ruanyifeng.com/blo...

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。