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登录远程主机的方法的主要内容,如果未能解决你的问题,请参考以下文章