一、前言

博主前些天买了一部Mac Pro,装完常用的开发软件后,立马就想连一下我的阿里云服务器。然后我就想下个XShell,然后竟然发现Mac居然没有,太不科学了,这么好的一款软件,为啥开发者没有适配相应的Mac系统。然后网上查了下,iTerm2在Mac的终端连接工具中好评较多,于是就下了iTerm2。但是博主连接的并不顺利,搞了一晚上到12点多才连接上。网上查阅了一轮,发现都没啥用,可能博主遇到的场景和它们不一样。为了后面的小伙伴们连接的时候少踩坑,我觉得是很有必要分享出来。

二、SSH下authorized_keys, id_rsa, id_rsa.pub, known_hosts作用

分享之前我们先来了解下这几个东西。

  • Secure Shell (SSH)是一种加密网络协议,用于在非安全(无担保)的网络上安全地操作网络服务,常用于用户远程登录到计算机系统。
  • RSA (Rivest-Shamir-Adleman)是最早的公钥加密系统之一,广泛用于安全数据传输。在这种加密系统中,加密密钥是公开的,解密密钥是私密的。在RSA中,这种不对称是基于两大素数的乘积分解的实际困难,即“保理问题”。

1、known_hsots

ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。我在上面列出的情况,就是这种情况。

原因:一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。

2、authorized_keys

就是为了让两个linux机器之间使用ssh不需要用户名和密码。采用了数字签名RSA或者DSA来完成这个操作。

模型分析:

假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;

要达到的目的:

A机器ssh登录B机器无需输入密码;

加密方式选 rsa|dsa均可以,默认dsa。

单向登陆的操作过程(能满足上边的目的):

  • 登录A机器
  • ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
  • 将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_rsa.pub >> ~/.ssh/authorized_keys
  • 大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.20.60 )

双向登陆的操作过程:

  • ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:
  • 两个节点都执行操作:# ssh-keygen -t rsa
  • 然后全部回车,采用默认值.
  • 这样生成了一对密钥,存放在用户目录的~/.ssh下。

将公钥考到对方机器的用户目录下,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)。

3、id_rsa、id_rsa.pub

上班的第一天,上司大哥都会说:待会给我发个公钥吧。
这里说的公钥其实就是id_rsa.pub
上司大哥是要把我们的客户端公钥上传到服务器,然后再把这个客户端公钥添加到authorized_keys。添加后,服务器就会认为你这个客户端为可信任。你则可以访问这个服务器了。

如何获取id_rsa.pub

终端输入 ssh-keygen

一路回车,最后会看到一个矩形的图案。你这时ls是看不到.ssh文件夹的。

接着cd .ssh/,这样就会切换到.ssh,再ls,就会看到id_rsaid_rsa.pub

最后 open id_rsa.pub,就会打开这个文件夹了。

现在你可以发id_rsa.pub给你的上司大哥了。

三、解决方法

1、先进入.ssh里看是否有以下文件

localhost:.ssh root# ls
authorized_keys	id_rsa		id_rsa.pub	known_hosts
localhost:.ssh root#

没有的话按照我上面说的方式生成。

2、修改ssh配置文件(/etc/ssh/sshd_config)

执行 sudo vim /etc/ssh/sshd_config

你会看到一堆配置信息

remarkable 2 云 remarkable2云服务_服务器


怎么操作不用我说了吧?算了还是说一下,怕有些新手操作的呢。

修改操作:Shift+i 修改完后:先按键盘左上角的 Esc 键,再输入:wq!。注意这里的冒号一定不能省!!!

HostKey /etc/ssh/ssh_host_rsa_key
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication yes	# 禁止密码认证
PermitEmptyPasswords no		# 禁止空密码登入
RSAAuthentication yes		# 采用RSA认证
PubkeyAuthentication yes	# 采用公钥认证

3、权限设置

如果第2步还不行的话,就进行第3步。

# chmod 700 /Users/riemann

# chmod 700 /Users/riemann/.ssh

# chmod 644 /Users/riemann/.ssh/authorized_keys  //公钥文件的所有权限

# chmod 600 /Users/riemann/.ssh/id_rsa        //私钥文件的所有权限

4、修改阿里云的密码并重启服务器

一般前面几种就已经可以解决了。万一还是没解决,那就修改阿里云的密码并重启服务器。

remarkable 2 云 remarkable2云服务_重启_02


重置实例密码,然后重启阿里云云主机。

再次尝试,大功告成!!!

remarkable 2 云 remarkable2云服务_服务器_03