git

生成密钥

ssh-keygen -t rsa -C "your_email@example.com"
在你的家目录下会生成两个文件,一个公钥,一个私钥

远程登录服务主机

必须要添加你的电脑公钥到服务主机的家目录上 ~/.ssh/

如何添加呢

scp /home/vagrant/.ssh/id_rsa.pub root@????:/root/.ssh 这种???没卵用
这里有一个前提就是,你一定要先把添加你的电脑公钥到服务主机的家目录上 ~/.ssh/,不然这些方法都是没用的,要是这种方法可以,那外面电脑不是乱套了,随便给你来添加个公钥到别人主机
然后你在ssh去访问,瞬间爆炸
cat /home/vagrant/.ssh/id_rsa.pub | ssh root@175.24.68.176 "cat >> ~/.ssh/authorized_keys"
scp /home/vagrant/.ssh/id_rsa.pub root@175.24.68.176:/root/.ssh (上面两个添加一个就行,第一个是追加,第二个云服务器会自动的把公钥文件覆盖到服务器上的对应文件)
输入后,是要你输入服务器密码的,就是登陆,然后你复制完你电脑的公钥到远程服务器后
你就可以不用密码了登陆了,直接ssh root@??????,就登陆了
Permission denied (publickey,gssapi-keyex,gssapi-with-mic). lost connection emmm 事情不可能一帆风顺,这就对了
出现这个,就是远程服务器禁止密码验证,这样你又不能密钥登陆远程,密码还不让你输入,那不是很狗血

如果到这里你还是出现上面那个错误,那恭喜你,这是你购买的云服务器那边的配置有问题,也就是云服务器那边根本就没开启密码验证,只有密钥验证

到这里,就无解了,你只能乖乖回去云服务器终端上边修改配置文件(/etc/ssh/sshd_config)把

PasswordAuthentication no 修改成 yes
就可以了回到你自己的电脑,再来输入之前的那个方法,把公钥添加到服务器上

你以为这样就完了,不,不可能,哈哈哈,你会发现你每次登陆都要输入密码,这就很操蛋,如何免密呢

很简单把你自己电脑和远程云服务器上面的配置文件(/etc/ssh/sshd_config)【如果要互联,那么就两边都改,不然改云服务器那边就行】
修改成下面几项
PasswordAuthentication no
PermitRootLogin no
UsePAM no
RSAAuthentication yes
PubkeyAuthentication yes

当然最最重要的是,每一次修改配置文件,一定要重启ssh服务,这边我以最常见的两种,来说

Ubuntu --- sudo /etc/init.d/ssh restart
centos --- systemctl restart sshd.service

最后还要说一下,公钥可以添加多个,分开就行在同一个文件中,这样你就能在多台电脑登陆服务器

原文地址:https://www.cnblogs.com/reyirfw/p/14045803.html