通过使用ssh keys我们可以免密登录Linux(且推荐这么使用),这样以后ssh到Linux的时候就不需要每次填写密码了。
生成密钥对
-
可以在任何地方生成,客户端,服务器,第三方,甚至在Vaultwarden方便管理,只要保证不要随意泄露即可,Windows / Mac / Linux可以输入命令
ssh-keygen -
一般会生成在
C:\Users\Username\.ssh\,而且都是成对生成的,会有一个公钥id_rsa.pub或者id_ed25519.pub和一个私钥
Server
-
Server端需要保留公钥,Client端保留私钥(不能泄露)
-
在Linux中查看是否有
.ssh目录,如果没有则新建cd ~ mkdir -p ~/.ssh chmod 700 ~/.ssh -
将公钥上传到Linux,也可以直接复制粘贴
cd C:\Users\Username\.ssh\ scp .\id_rsa.pub username@address:~/.ssh scp .\id_ed25519.pub username@address:~/.ssh -
在Linux中查看是否有
authorized_keys文件,如果没有则新建cd ~/.ssh touch authorized_keys chmod 600 ./authorized_keys cat id_rsa.pub >> ./authorized_keys cat id_ed25519.pub >> ./authorized_keys -
添加完之后就可以将公钥删除了
cd ~/.ssh rm id_rsa.pub rm id_ed25519.pub
Client
-
Client端可以在
config文件指定密钥对,Windows在C:\Users\Username\.ssh\configHost host1 # Server主机名 HostName hostname1 # Server的IP地址或者URL User admin # USer IdentityFile "C:\Users\Username\.ssh\id_ed25519" # 本机私钥地址 Host host2 HostName hostname2 User admin IdentityFile "C:\Users\Username\.ssh\id_pem" -
如果没指定,默认使用
id_ed25519的私钥,且一个id_ed25519文件只能存一个私钥
配置完成后就可以免密码登录Linux了。