Mac上查找、生成ssh公钥

首先查看是否已经生成ssh公钥

cat ~/.ssh/id_rsa.pub
如果显示 cat: /Users/********/.ssh/id_rsa.pub: No such file or directory

说明没有,就需要创建公钥

 

用ssh-keygen创建公钥

ssh-keygen
创建好后就可以用cat ~/.ssh/id_rsa.pub查看了

SSH公钥登录原理

通常我们使用Xshell登录ssh时,有两种方式:

一、密码口令(类似于账号密码登录)

1.客户端连接上服务器,服务器把公钥发给客户端。

2.客户端用服务器公钥加密,上传密码。

3.服务器用私钥解密,如果匹配,则连接。

二、密钥登录

一般使用RSA公钥私钥技术。

1.生成密钥对。

2.将公钥信息写入目标用户的密钥验证文件。

3.客户端请求登录。

4.服务器发送一段随机字符串,并使用公钥加密。

5.客户端使用私钥解密,并返回解密后的信息。

6.服务器进行信息对比,如果验证成功,则允许连接。
%title插图%num

这就可以解释为什么我用Xshell软件,只有一个私钥文件,却可以登录两台云端服务器的问题

答:(个人理解,有可能是错误的)那两台云端服务器都事先写入公钥信息,该公钥和我的私钥是一个密钥对,因此,理论上只要有N台主机都事先写入我的公钥信息,我就可以连接N台主机。

补充:通常来说,公钥有拓展名,私钥没有拓展名,下图为私钥。公钥应该传到服务器上。

%title插图%num

git 在服务器上使用ssh公钥授权

大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个。生成公钥的过程在所有操作系统上都差不多。 首先先确认一下是否已经有一个公钥了。SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。进去看看:

localhost: xxx$ cd ~/.ssh
localhost:.ssh xxx$ ls
github_rsa github_rsa.pub id_rsa id_rsa.pub known_hosts

id_rsa.pub 就是公钥,id_rsa是私钥,如果这个目录根本就没有这些文件可以通过ssh-keygen来创建。

localhost: xxx$ ssh-keygen

通过这个命令确认输出路径并输入密码以及确认密码然后就会生成相应文件,然后把.pub文件的内容提供给git服务器管理员就可以了。

添加ssh公钥的两种方式

将本地端的id_rsa.pub添加到服务端的authorized_keys的两种方式:

 

1、直接操作文件

 

cat ~/.ssh/id_rsa.pub | ssh user@hostname ‘cat >> .ssh/authorized_keys’
 

2、通过命令

 

ssh-copy-id -i id_rsa.pub user@hostname
ssh-copy-id会检测id_rsa私钥文件是否存在,可以touch id_rsa即可。

 

http://www.jianshu.com/p/848e982df6be

使用SSH公钥登录服务器

使用Xshell 或 secure CRT 先生成密钥对,将密钥对放到服务器 .ssh/authorized_keys 文件中,如果没有次文件,需要创建一个。

Xshell :

设置服务器IP:

%title插图%num

设置用户验证方式:

%title插图%num

将生成或者导入的公钥以文本的显示添加到服务器.ssh/authorized_keys文件中,如果文件不存在需要新建文件:

*后即可登录成功。

secure CRT:

%title插图%num

如果已经有公钥,选择导出:

%title插图%num

%title插图%num

这样便获得了公钥,放入服务器.ssh/authorized_keys文件中,如果文件不存在需要新建文件。

如果没有公钥,则点击创建身份文件进行创建:

%title插图%num

之后根据提示进行创建即可:

%title插图%num

如果服务器已经将公钥导入,但还没有生效,则需要重启SSH进程:

$ service ssh restart
如何从一台服务器登录到另一台服务器:

//以下是两种登录方法

ssh user_name@ip

ssh ip -l user_name
比如从我的虚拟机登录服务器

ssh ip -l usr_name
接下来输入服务器usr_name 账户的密码即可登录

使用SSH 公钥登录:

将虚拟机的公钥放到服务器的.ssh/authorized_keys文件中,如果文件不存在需要新建文件

下一步会要求输入私钥密码,输入正确即可登录服务器;如果连续三次输入错误,将自动使用用户密码进行登录

ssh ip -l user_name
sun@machine:~$ ssh usr_name@ip
Enter passphrase for key ‘/home/sun/.ssh/id_rsa’: