ssh 免密登录远程服务器

我们在登录远程服务器时,总是要输入密码,很烦,今天配置了免密登录,记录一下

配置免密就一句话,把要登录的本地的公钥存至远程的服务器内就行


先打开自己本地的命令行工具cmd,
输入ssh-keygen
然后根据他的提示敲几下回车就行了 。
密钥id_rsa和公钥id_rsa.pub文件都默认保存在(C:\User\用户/.ssh)文件夹下,然后在以记事本的方式打开公钥id_rsa.pub,复制其内容,待用 。

在登陆你的远程服务器 以Ubuntu为例
我们可以查看.ssh目录ls -a发现这里有一个authorized_keys。
我们在进入到.ssh目录下cd .ssh利用vim编辑authorized_keysauthorized_keys,我们进入到编辑器先按i,发现左下角变成了INSERT,然后我们把之前复制的内容粘贴进去,在按一下Esc,发现左下角的INSERT消失,输入:wq!保存并退出,然后就完事了。

自己可以在ssh root@XXX登录试试,这是发现没有密码了!

ssh-copy-id 命令:自动上传公钥

这是另一种方法
在本地输入命令

ssh-copy-id -i .\.ssh\id_rsa.pub [email protected]

-i 指定公钥文件
.\ssh\id_rsa.pub 公钥路径
root 远程服务器的用户名
@后面是自己的服务器ip

可能会有这种情况


image.png

解决办法:https://blog.csdn.net/Defiler_Lee/article/details/116278442

function ssh-copy-id([string]$userAtMachine, $args){   
    $publicKey = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
    if (!(Test-Path "$publicKey")){
        Write-Error "ERROR: failed to open ID file '$publicKey': No such file"            
    }
    else {
        & cat "$publicKey" | ssh $args $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}

你可能感兴趣的:(ssh 免密登录远程服务器)