在客户机生成私钥和公钥后,将公钥放在服务机,后续客户机通过ssh远程登录服务机时,将不再提示输入服务机登录密码,即可实现免密码登录。
- 这种“公钥登录”方式,可用在服务器间,也可以用在个人电脑(mac\windows\linux),从而实现免密码远程登录服务器;
- 而我之所以会用到,最主要原因是我们所有的服务器访问都是通过堡垒主机来完成的,实际上我们不会有服务器密码;
- 比较坑的一点,堡垒主机不支持mac,所以只能乖乖打开虚拟机,通过windows访问堡垒机,效率是非常低;
- 好在测试服务器22端口目前还未限制,我们可用这种方式配置,实现mac免密码登录服务器;
- 以上其实不合公司规定( ̄Д  ̄)
Mac配置方式:
由于mac os 是基于unix的操作系统终端和linux非常类似,所以不用借助类似于windows下的putty 和CRT工具即可远程登陆linux服务器,只需简单地3步即可免密码ssh远程。
#####1. 生成密钥。在mac终端下执行如下命令:
ssh-keygen -t rsa
默认都摁回车就行,不用做其他修改,执行完后会生成两个文件,一个公钥,一个私钥。
ls ~/.ssh
#id_rsa(私钥) id_rsa.pub(公钥)
#####2. 放置公钥到需要远程的服务器。
scp ~/.ssh/id_rsa.pub root@:/root/.ssh/
#####3. 登录到远程服务器
cd ~/.ssh
cat /root/.ssh/id_rsa.pub >> authorized_keys #将公钥内容加入到authorized_keys文件,没有则新建一个就行
#####4. 将authorized_keys更改权限
chmod 600 authorized_keys
也可以在远程服务器上生成一对密钥,将公钥内容加入到authorized_keys文件并更改权限,将私钥拷贝到需要远程服务器的终端下
###SSH客户端使用配置
#####1. 将私钥文件文件放到~/.ssh
目录中
vi ~/.ssh/config
#####2. 在文件中写入内容为
Host test_server #别名,域名缩写
HostName test.com #完整的域名,本地host解析至远程IP
User root #登录该域名使用的账号名
PreferredAuthentications publickey #有些情况或许需要加入此句,优先验证类型ssh
IdentityFile ~/.ssh/id_rsa #私钥文件的路径
#####3. 客户端SSH登录远程服务器
ssh {Host} # 登录刚才设置的别名服务器
#####4. 疑难问题
Permissions 0777 for ‘/Users/username/.ssh/id_rsa’ are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
chmod 600 ~/.ssh/id_rsa