本地客户端生成公钥,实现ssh免密登陆远程主机

1. 在ssh客户端,生成公钥和私钥

  • 在ssh客户端,查看是否已经有了ssh密钥
$ cd ~/.ssh

如果没有密钥,则不会有此文件夹;有则备份,并删除原文件夹。

  • 生成公钥,私钥
$ ssh-keygen -t rsa 

一直按3个回车。系统会默认在 ~/.ssh目录生成两个文件: id_rsa(私钥),id_rsa.pub(公钥)。

$ cd ~/.ssh

$ ll 

-rw------- 1 jack jack 1675 Jul 12 01:33 id_rsa
-rw-r--r-- 1 jack jack  410 Jul 12 01:33 id_rsa.pub

现在,设置你的私钥权限。

$ chmod 700 ~/.ssh

$ chmod 600 ~/.ssh/id_rsa 

2. 在ssh服务端

2.1 在ssh服务端,修改配置文件

# vim /etc/ssh/sshd_config 

找到以下内容,去掉注释符“#”。

RSAAuthentication yes 
PubkeyAuthentication yes 
AuthorizedKeysFile .ssh/authorized_keys 

注:如果多用户免密登录远程主机,需要设置PasswordAuthentication no;如果只有一个人能登录的远程主机,出现问题,就只能重装系统,因此就不建议设置PasswordAuthentication no

重启sshd服务

# service sshd restart 

2.2 在ssh服务端,导入公钥到服务器端认证文件,更改权限

  • 复制私钥到远程主机。
$ ssh-copy-id user@host

或者手动把公钥复制到远程主机,添加到authorized_keys

$ cat id_rsa.pub >> ~/.ssh/authorized_keys 

添加完,就可以删除公钥id_rsa.pub。

  • 在ssh服务端,修改相关文件目录权限。
$ chmod 700 /home/jack

$ chmod 700 ~/.ssh 

$ chmod 600 ~/.ssh/authorized_keys

3. ssh客户端、服务端需要保留的文件

  • ssh客户端保留的文件
id_rsa,私钥,必要

id_rsa.pub,公钥,必要,留待以后添加到其他远程主机

known_hosts,记录本机ssh免密登陆的远程主机列表,可选
  • ssh服务端保留的文件
authorized_keys,客户端主机的公钥列表

4. 测试

本地主机ssh远程服务器。

# ssh -v -p port user@远程服务器IP

你可能感兴趣的:(Linux)