ssh远程主机

SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。在此之前,一般使用FTP或Telnet来进行远程登录。但是因为它们以明文的形式在网络中传输账户密码和数据信息,因此很不安全,很容易受到黑客发起的中间人攻击,这轻则篡改传输的数据信息,重则直接抓取服务器的账户密码。

想要使用SSH协议来远程管理Linux系统,则需要部署配置sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法:

  1. 基于口令的验证—用账户和密码来验证登录;
  2. 基于密钥的验证—需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;该方式相较来说更安全。

 自从使用ssh以来,虽说能够熟练的进行ssh的远程管理主机和远程copy,但是一直以来都没有系统地去了解ssh,今天特意翻书去复习了一番

ssh最常用的几个命令如下:

ssh user@ip #登录远程用户user(user为用户名)
scp user@ip:文件路径 本地保存路径 #复制文件到本地
scp -r user@ip:文件夹路径 本地保存路径 #复制文件夹到本地
scp 本地文件路径 user@ip:远程主机保存路径 #复制文件到远程主机
scp -r 本地文件夹路径 user@ip:远程主机保存路径 #复制文件夹到远程主机
  • 远程登录主机

  • 从服务器复制文件到本地

  • 从服务器复制文件夹到本地 

  

  • 从本地复制文件到远程服务器 

  • 从本地复制文件夹到远程服务器

  

  • 采用密钥验证方式登录远程服务器 

对于以上的命令使用思路还是比较清晰的,但是对于采用密钥登录的方式就有点懵,可能会用但是不一定明白

  1. 第一步 

首先生成密钥 ,在非root用户下我们有两个操作选项,用sudo获取管理员权限,然后生成密钥,这种方式生成的密钥会放在/root/.ssh/id_rsa文件中,也就是目录放在了root用户中,这个操作结果会生成的是root用户自己的用户的密钥,用这种方式生成密钥如果在非用户中远程登录服务器则每次都要输入root用户密码,另一种就是直接输入ssh-keygen命令,生成的密钥会放到该用户的家目录中的.ssh目录下

  1. 第二步

然后将生成的密钥发送给远程服务器,在输入ssh-copy-id命令后会有一个交换的对话选项,询问是否设置密码,这个我纠结了很久一直没时间去搞懂这个密码用来干嘛的,之前我一般是直接按回车不输入密码,今天想看看输入密码后是什么样子的,下图是在不输入密码的情况下,直接按回车发送密钥,发送完成后直接ssh远程登录,发现不用输入密码就可以远程登录服务器,这是因为通过密钥本地主机和远程服务器通过匹配密钥进行验证,只要你的任何一台本地主机向服务器发送了密钥就可以直接登录远程主机而不用输入远程主机的密码。

下面来看看第二种情况,就是在发送密钥时输入了密码的情况,重新生成密钥,由于前面已经生成过了,所以我们在对话框中选择覆盖掉刚刚生成的密钥,覆盖后有个提示输入密码的对话,我们尝试着输入一个密码,不是root密码,也不是本用户的用户密码,自己随便想一个,然后将密钥发送给远程服务器,也就是重复上一步的操作

再次远程登录服务器,仿佛知道了原因,在尝试登录远程服务器的时候会弹出一个输入密码的对话框,输入root密码不对,输入当前用户密码不对,输入刚刚创建密钥时设置的密码登录成功,可见在生成密钥的时候可以为密钥设置一个密码,当对密钥进行验证的时候就需要用到这个密码,因为对于生产环境下的远程服务器的密码来说密码有多复杂就多复杂,防止被暴力破解,而在本地服务器上传密钥给远程服务器后,本地的服务器可以直接远程到远程服务器而不需要密码,这样其实也不安全,因为别人有可能通过本地主机远程到远程服务器,说白了就是密钥防外人,局域网外的人,密钥的密码防局域网内的人,因为不排除黑客先黑入局域网再远程服务器。

参考书籍:《Linux就该这样学》第九章

发布了92 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zZzZzZ__/article/details/102866713