简洁
服务端角度
ssh-keygen
回车回车回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys;\
chmod 700 ~/.ssh ;\
chmod 600 ~/.ssh/authorized_keys
~/.ssh/id_rsa 发给客户端,客户端放 ~/.ssh/id_rsa
客户端登录
ssh SERVER_IP1
客户端角度
ssh-keygen
回车回车回车
ssh-copy-id SERVER_IP1
填写服务端登录密码上传完成。然后直接使用
ssh SERVER_IP1
-------------------深入分析------------------------
众所周知
ssh-keygen
根据提示,默认生成在
~/.ssh/id_rsa
同时生成
~/.ssh/id_rsa.pub
可以修改位置生成在其他地方,例如当前目录
./aaa
同时生成
./aaa.pub
指定密码(是不是可以用来过等保双因子要求)
不是默认 ~/.ssh/id_rsa 的话,使用时候 需要
-i [文件]
如果以服务器角度
id_rsa.pub 内容放需要的用户home目录下的.ssh/authorized_keys。
例如当前目录下的a.pub文件,用户 SERVER_USER1
cat ./a.pub >> /home/SERVER_USER1/.ssh/authorized_keys
如果是首次,可能需要修改 .ssh 和 authorized_keys 用户及权限(根据 /var/log/messages提示)
chown SERVER_USER1:SERVER_USER1 -R /home/SERVER_USER1/.ssh ;\
chmod 700 /home/SERVER_USER1/.ssh ;\
chmod 600 /home/SERVER_USER1/.ssh/authorized_keys
最后 id_rsa 文件发给客户端使用。
客户端把 id_rsa 放自己 .ssh 目录下就能默认使用,否则,通过 -i id_rsa引用
ssh -i ./a SERVER_USER1@SERVER_IP1
以上,服务器端角度完结
如果以客户端角度
客户端通过ssh-keygen 生成 文件后,把 id_rsa.pub 内容填到 服务端目标用户的 authorized_keys 文件中(可以用工具 ssh-copy-id)
ssh-copy-id -i ./a.pub SERVER_USER1@SERVER_IP1
之后需要输入一次服务端 SERVER_USER1 密码
(实际就是登录一次,写文件authorized_keys,如果是第一次,会自动生成 /home/SERVER_USER1/.ssh/authorized_keys ,并且权限也配置好)
最后可以通过文件登录
ssh -i ./a SERVER_USER1@SERVER_IP1
---------------------后话-------------------
ssh 登陆时候,默认引用文件是 对应 id 用户下的 .ssh/id_rsa
我的例子是,客户端、服务端 用户一致
root 0:0 /bin/false --禁止登录
USER1 0:1000 /bin/bash --有root权限,但是不是 root 组,通过普通adduser创建,后修改passwd文件id
USER2 0:0 /bin/bash --同root 不同名字
USER3 1001:1001 /bin/bash --普通用户
- 当我用 USER1、USER2 执行 ssh-keygen ,提示生成id_rsa 是 /root/.ssh/id_rsa, 因为 他们 id = 0
- 当我用 USER1、USER2 通过ssh-copy-id 把 .pub 传给服务器,USER1 自己home下的.pub 内容会正常添加在/home/USER2/.ssh/authorized_keys里。不像 ssh-keygen,因为 id = 0 而到 root 下找 .pub
ssh-copy-id USER2@SERVER_IP2
客户端 /home/USER1/.ssh/id_rsa.pub >> 服务端 /home/USER2/.ssh/authorized_keys - USER1、USER2 登录服务器的 USER3
ssh USER3@SERVER_IP3
默认使用的是客户端 /root/.ssh/id_rsa ,即又是看 id = 0 - 各层目录和文件的所有者和权限控制比较严格
服务端 authorized_keys 文件权限 600, 655 都行
各层目录所有者要正确。例如 USER1 做服务端的话,要确认 chown -R root:USER1 /home/USER1 ,因为 USER1 = 0:1000