ssh 秘钥登录

ssh-keygen   –t  rsa  –f  [filepath/filename]   –C   “xxx”

此命令用于生成一对秘钥,-C后面的参数用于对生成的秘钥做一个注释,可以省略这个参数(省略后此命令默认使用执行这行命令的linux的用户名@计算机名作为注释,另外,使用xshell生成的秘钥默认都没有这个选项,需要自己在秘钥最后手动输入注释),例如生成用于github上的公钥时,我们可以省略,也一样可以连接github,一般网上的教程把邮箱名作为github的-C选项,但我测试不必一定用注册github的邮箱名,任意写个东西都可以作为注释或则干脆使用xshell生成的不包含注释的私钥(测试github需要使用命令ssh –T 下面会详细讲述)

但对有些场所-C 选项还是很有用的,例如google中的vps,如果我们通过vps管理网页添加公钥,google会将-C选项作为用户名,如果没有这个用户google vps会自动创建该用户,但如果我们通过手动导入公钥的方式,仍然可以省略这个参数,(省略这个参数有两层意思,一是使用ssh-keygen命令是省略-C选项,使用默认的用户名@计算机名,或者随便写一个-C,第二层意思是直接没有这个注释,例如使用xshell生成的秘钥,没有注释,依然可用)例如我们可以为一个已存在的用户名添加一个公钥,将xshell生成的没有注释的公钥或ssh-keygen省略-C选项生成的公钥复制到google vps的   .ssh/authorized_keys文件中,追加到文件末尾即可

-t选项指定秘钥类型,一般为rsa dsa

-f选项指定生成私钥的位置和文件名,公钥默认也在这个位置

ssh   username@ip   –i   [privatekey file]

用于远程登录到服务器

scp  –i  [private key file]  [filename]   username@ip:[filepath]

scp  -i  [private key file]  username@ip:/[filepath/filename]   [filepath]

用于本地和服务器之间copy文件,-i选项用于指定与服务器建立ssh连接时使用的私钥

ssh   –T  [email protected]  -i  [private key file]

这个ssh命令用户验证是否与github建立连接,使用该命令之前只需确保github账号中添加了与私钥对应的公钥并且github.com域名对应的私钥文件ssh可以默认找到即可,此命令中并没有体现出github的个人账户,邮箱等信息,验证连接时也用不到这些信息,验证成功会返回包含github用户名的信息

Hi Kylin-Wei! You've successfully authenticated, but GitHub does notprovide shell access.

git clone username@ip:[ repository_path]

eg:git clone [email protected]:/root/code

用于克隆远程git服务器上的仓库到本地,注意,clone的对象必须是一个reposibory,另外此命令默认这里使用ssh进行传输,也可以将地址写成https进行传输

以上几个命令的-i选项都是用来指定与服务器建立ssh连接的私钥文件,其实只要设置号.ssh目录下的config文件,即可实现对秘钥文件的管理,不用每次都指定秘钥文件,通过config文件来关联服务器与相应的私钥即可

格式如下:

#Host后跟别名,别名一定要和git remote add添加的地址中的名称一样
Host github.com
#这些代码托管网站的默认用户都是git
User git
#域名
Hostname github.com 
#PreferredAuthentications publickey
#指定秘钥文件
IdentityFile ~/.ssh/github_key


Host gitee.com
#这个域名可以在码云官网上找到
HostName git.oschina.net
User git
IdentityFile ~/.ssh/gitee_key
IdentitiesOnly yes

一般自己服务器秘钥管理的格式如下,Host后为别名,

#Host后跟别名
Host googlevps 
User Kylin_Wei 
Hostname 104.199.222.52 
PreferredAuthentications publickey
IdentityFile ~/.ssh/Google_cloud
Port 22

之后我们直接执行ssh googlevps就可以连接到远程服务器了

猜你喜欢

转载自blog.csdn.net/xiaoyink/article/details/79803563