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 git@github.com -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 root@42.121.13.248:/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就可以连接到远程服务器了