免密ssh和自定义服务器名字【远程连接服务器】
- 免密ssh和自定义服务器名字【远程连接服务器】
- 服务器添加本地公钥ssh-copy-id
- 使用别名登录config
免密ssh和自定义服务器名字【远程连接服务器】
- 原理
- 实现免密登录需要
本地的公钥id_rsa.pub放在服务器上的 authorized_keys 文件中
。
服务器中的位置一般在~/.ssh.authorized_keys。若不存在,创建一个即可。
注意 authorized_keys 文件的权限必须是600,如果权限不对会影响登录。
touch authorized_keys
chmod 600 authorized_keys
本地生成公钥和私钥
ssh-keygen -t rsa
参数-t rsa
表示使用rsa算法进行加密,执行后,会在当前用户/.ssh目录下找到id_rsa(私钥)
和id_rsa.pub(公钥)
正常情况下可以跳过上面的两个步骤。
服务器添加本地公钥ssh-copy-id
本地公钥一般在Home目录下面,按Ctrl + H显示以.
开头的文件
ssh-copy-id -i id_rsa.pub 服务器用户名@服务器ip地址
例如
ssh-copy-id -i ~/.ssh/id_rsa.pub kkang@222.219.189.123
-i 指定本地的公钥文件地址
会自动将本地的公钥id_rsa.pub传入到服务器的~/.ssh/authorized_keys中
在Windows下面执行ssh-copy-id会出现以下bug:
ssh-copy-id : 无法将“ssh-copy-id”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,
请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ ssh-copy-id
+ ~~~~~~~~~~~+ CategoryInfo : ObjectNotFound: (ssh-copy-id:String) [], CommandNotFoundException+ FullyQualifiedErrorId : CommandNotFoundException
解决方案是先在powershell中,执行以下内容:
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" }
}
在Windows系统下,可能出现:
'ssh-copy-id' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
方法1:可以下载一个git然后点击Open Git Bash here,执行上述命令。https://git-scm.com/download/win
方法 2:使用 WSL(Windows Subsystem for Linux)
直接执行上述命令即可
方法 3:手动复制、
- 打开公钥文件:
notepad $env:USERPROFILE\.ssh\id_rsa.pub
- 复制公钥内容。
- 登录到远程服务器:
ssh username@remote_host
- 在远程服务器上创建 .ssh 目录(如果不存在的话):
mkdir -p ~/.ssh
- 将公钥内容粘贴到 authorized_keys 文件:
将公钥内容粘贴到 authorized_keys 文件:
使用别名登录config
在本地的.ssh目录下创建一个config文件,写入配置:
# Host 自定义连接服务器名称
Host 别名
# HostName 连接服务器IP
HostName xx.xx.xx.xx
# Port 服务器 ssh 对外开放的端口
Port 22
# 登录服务器的用户
User root
# 本地服务器密钥文件地址
IdentityFile ~/.ssh/id_rsa
一般情况下写下面这三个就ok,如下:
其中Host是别名
Host 3080HostName 221.201.184.123User kkHost 4090HostName 221.201.184.134User kk
到时候只需ssh 4090
,即221.201.184.134这里主机,就能直接连上。