ssh免密免IP登录远程主机的方法

Posted akyna-zh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ssh免密免IP登录远程主机的方法相关的知识,希望对你有一定的参考价值。

date: 2021-08-30 16:56:48
author: jzh

我们可以通过指令:

ssh 用户名@IP

登录远程主机,但是每次都要输入ip和密码,有点麻烦,为了节省时间,我们需要寻求提高效率的办法!

通过了解,我们可以通过RSA,即非对称式的加密方法实现免密操作,而免IP只需要在config文件中进行配置即可。

具体实现步骤

首先我们实现免ip登录:

  • 新建config文件

    若window下操作,则在.ssh目录中新建一个名为config的文件,而linux下直接编辑ssh_config文件。

  • 编辑代替名以及IP,端口号,用户。

Host 输入代替名
	HostName 输入IP
	Port 输入端口号
	User 输入用户

这样,即可通过

ssh 代替名

进行登录咯!

接着我们实现免密登录:

  • 在本地生成密钥:
ssh-keygen

并选择生成在.ssh目录下即可,获得一把公钥和私钥。

将名字带.pub的就是公钥了。

  • 将公钥发给远程主机

通过命令

ssh-copy-id -i .ssh/公钥 用户名@IP

即可发送给远程主机。

在window10中可能出现以下错误:

ssh-copy-id : 无法将“ssh-copy-id”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

则可先于命令行中运行以下代码:

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"
    }
}

之后再重试即可成功发送公钥!

远程主机对本地发送过去的公钥进行加密,只有本地的私钥可以解密!

这样本地就与远程主机有了联系!

plus:

这里贴上一个我遇到的问题,如果出现以下错误:

no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

则是本地密钥算法与远程主机密钥算法不匹配造成的!

可以在ssh_config或config文件中添加密钥算法配置:

Host 输入代替名
	HostName 输入IP
	Port 输入端口号
	User 输入用户
	KexAlgorithms +diffie-hellman-group1-sha1

其中加号不能省略!表示新增的密钥算法哦~

over!

date: 2021-08-30 16:56:48
author: jzh

以上是关于ssh免密免IP登录远程主机的方法的主要内容,如果未能解决你的问题,请参考以下文章

ssh免密远程登录

Linux ssh 免密登录设置成功,却不生效

CentOS 配置远程主机ssh免密登录

Linux系统ssh远程免密登录

SSH免密登录

设置ssh免密不起作用?彻底搞懂密钥vscode在remote SSH免密远程登录