SSH 登录服务器 提供证书登录

Mac 环境下面--------

远程主机ip:HostIpAddress
如果没有 key 话需要自己生成,或找同事索取.

1.生成key
如果本地有id_rsa和id_rsa.pub这两个文件就不要再生成一次了,否则之前已经设置好的网站就白弄了。

ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [-f output_keyfile]

ssh-keygen -t rsa


2.把公钥id_rsa.pub拷到远程主机上面去
scp /.ssh/id_rsa.pub user@HostIpAddress:~/.ssh/ir.pub (这里没用id_rsa.pub是因为防止把远程主机上的公钥覆盖)


3.把公钥id_rsa.pub追加到授权文件中
cat ~/.ssh/ir.pub >> ~/.ssh/authorized_keys
如果authorized_keys不存在,则创建之 touch ~/.ssh/authorized_keys(# 注意: 必须将~/.ssh/authorized_keys的权限改为600, 该文件用于保存ssh客户端生成的公钥,可以修改服务器的ssh服务端配置文件/etc/ssh/sshd_config来指定其他文件名)

mac中的文件是/etc/sshd_config

The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2

but this is overridden so installations will only check .ssh/authorized_keys

AuthorizedKeysFile .ssh/authorized_keys


4.回到本地主机,免密码登陆远程主机
ssh root@HostIpAddress(默认使用的是~/.ssh/id_rsa)
假如在生成密钥公钥对文件时用-f指定了其他的文件名,需要使用-i来指定私钥文件

ssh root@HostIpAddress -i /path/to/your_id_rsa

或者在全局配置文件/etc/ssh_config(本地配置文件~/.ssh/config,没有则创建之,一定注意配置书写格式.不然换出问题)中添加如下配置:

Host RemoteHostIpAddress
        IdentityFile /path/to/your_id_rsa


方便小技巧:
1.为每个服务器指定私钥公钥对文件
通过在~/.ssh/config中配置可以实现为每个服务器指定不同的配置文件

Host HostIpAddress

IdentityFile /path/to/your_id_rsa

2.每次登陆时仍然要ssh root@RemoteHostIpAddress,ipAddress不好记,怎么办?
在/etc/hosts中添加自己容易记的主机名
例如:

192.168.11.222 hackathon

这样登录时就可以使用ssh root@hackathon了。

不过要~/.ssh/config也要改一下:

Host hackathon
        IdentityFile /path/to/your_id_rsa
3.指定登陆用户
Host hackathon
       IdentityFile /Users/user1/.ssh/hackathon_rsa
       user root

这样每次登陆时,就可以直接ssh hackathon了,并且是以root用户登陆的。

4.session copy,多次登陆只输入一次密码
在~/.ssh/config中添加如下3行,只要在已经有一个terminal登录到aaa.bbb.com中后就可以session copy然后免密码登陆了。

Host aaa.bbb.com

ControlMaster auto

ControlPath ~/.ssh/master-%r@%h:%p

5.登陆就是执行很少的命令,不登陆能不能执行命令?
登陆一次忙活半天,登陆上去了就执行很少的命令,能不能不登陆了?

可以

ssh hackathon “your command”

例如:

user1@user1deMacBook-Pro:~/.ssh$ ssh hackathon “ls /”
bin
boot
data
dev
etc
home

6.安装sshpass

sudo apt-get install sshpass

安装完成后使用sshpass允许你用 -p 参数指定明文密码,然后直接登录远程服务器。例如:

sshpass -p ‘你的密码’ ssh 用户名@服务器ip地址

用 ‘-p’ 指定了密码后,还需要在后面跟上标准的 ssh 连接命令。
7.other错误处理
如果连接时出现如下的错误:
Agent admitted failure to sign using the key
则使用 ssh-add 指令将私钥加进来 (根据命名不同更改 id_rsa)
ssh-add ~/.ssh/id_rsa

---------------------------------------要是别人给你的证书是 .ppk 怎么办 别急 !!!-------------------------------------------------------------------------

  1. 使用Homebrew安装putty(homebrew是Mac下的包管理工具):

$brew install putty

同时会安装puttygen。

  1. 使用puttygen从.ppk文件产生.pem文件:

$puttygen privatekey.ppk -O private-openssh -o privatekey.pem

注意:前面一个是大写O,后面一个小写o。

  1. 使用.pem远程登录

¥ssh -i privatekey.pem [email protected]

猜你喜欢

转载自blog.csdn.net/Java_oujinjie/article/details/84870547