今天我跟大家分享一下如何在mac上设置远程服务器的秘钥登录

秘钥是什么原理呢?Key-Based Authentication. Create private key (local machine) 和 public key (server),

我的文件公钥加密,就算别人偷走了我的公钥,但他们不知道我用来解密的私钥,所以没法破解我的数据,所以我把我的公钥放在服务器上,服务器用我的公钥加密数据传给我,我用我的私钥解密就可以传输加密数据了。而且公钥私钥能起到数字签名和验证,防伪装的用处,总之公钥和私钥是成对的,它们互相解密。 公钥加密,私钥解密。 私钥数字签名,公钥验证。大家有兴趣可以看看,所以这种登录方式要比密码登录安全得多,在生产上,我们的服务器都是禁止密码登录只能采用秘钥形式。

视频讲解

<img src="http://sctongye.com/main/wp-content/uploads/mqdefault.jpg"
alt="IMAGE ALT TEXT HERE" width="320" height="180" border="10" />


本地机器上 输入 

ssh-keygen -t rsa -b 4096 # 创建一对公私钥

产生的文件放在了 cd ~/.ssh 下

ls -al

id_rsa 是 private key, id_rsa.pub 是 public key (这个是要拷贝到服务器上的)
确保服务器 /home/pi 目录下有 .ssh 如果没有的话 mkdir .ssh

mac 下我们可以用 ssh-copy-id 但先走一遍手动的步骤

scp 是一个很好的通过ssh传输文件的命令

scp ~/.ssh/id_rsa.pub pi@192.168.1.123:/home/pi/.ssh/macpro.pub #输入密码

这时在服务器上 ls .ssh/ 就能看见刚才拷贝过去的文件
在服务器的 .ssh 文件夹下应该有一个叫 authorized_keys 的文件里面保存着所有你登录这个服务器的被许可的 public key,现在咱们还没有这个文件,所以咱们只需要输入这个命令

cat ~/.ssh/macpro.pub >> ~/.ssh/authorized_keys 

这个命令是个很常见的写入文件命令,注意是 >> 追加写入,如果没有文件便会创建文件,如果用 > 就是删除原有内容替换微信内容,所以一定要注意。

现在我们来看看这个文件里的内容是什么

cat ~/.ssh/authorized_keys

现在设置 .ssh 目录的权限

chmod 700 ~/.ssh   421  rwx------
chmod 600 ~/.ssh/*  rw-------

目录权限小常识:
r 可以对此目录执行ls列出所有文件
w 可以在这个目录创建文件
x 可以cd进入这个目录,或者查看详细信息

文件权限小常识
r read可读,可以用cat等命令查看
w write写入,可以编辑或者删除这个文件
x executable 可以执行

如果你只允许用key登入而禁止任何密码登录的方式,在服务器上输入 

cd /etc/ssh/
sudo cp sshd_config sshd_config.bak # 好习惯
sudo vim sshd_config 把 PasswordAuthentication yes 前面的 #注释去掉 然后改成 no
sudo service ssh restart 更新设置

在mac上,

brew install ssh-copy-id
ssh-copy-id pi@192.168.1.123 

自动完成上述所有步骤包括创建或更改ssh目录以及它的权限