一般在使用git或者linux登录时总是需要用户名或者密码登录, 所以为了避免这些操作,于是就有了免登陆的方式,ssh公私钥

生成命令

一般情况下生成命令生成的路径为$USER_HOME/.ssh/id_rsa,且git和ssh命令读取也是默认的这个

ssh-keygen -t rsa #回车,回车之后会让你生成输入密钥名称路径,密码等
Generating public/private rsa key pair.
Enter file in which to save the key (用户目录/.ssh/id_rsa): 密钥路径名称 #不填回车则使用默认的用户目录/.ssh/id_rsa
Enter passphrase (empty for no passphrase): 公私钥密码 # 直接回车则没有
Enter same passphrase again: 确认密码 #回车则没有
Your identification has been saved in /home/phpuser/.ssh/id_rsa.
Your public key has been saved in /home/phpuser/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Q6yeZlmp2leyBXXdVnZkHx86wBQe2WgETrvc9FRH9wg phpuser@master
The key's randomart image is:
+---[RSA 3072]----+
|         o=*E. B@|
|       .o +=+o++%|
|        o+.+ ..+|
|       oo. o .  |
|      . S+ . .   |
|     . =..o      |
|               |
|     =  o        |
|    . ..         |
+----[SHA256]-----+
# 出现上面的图案则表示已经完成

获取ssh公钥内容

cat ~/.ssh/id_rsa.pub #回车,会出现下面的字符,下面字符为删减内容, 每台机器的生成的公私钥不一样,不要直接复制下面内容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDGX6xijmv9Zb+rRa6aDIAniXULuVwdw8UQubEV5nH+Hyh0YtetKfVItU9/1eJnGWBabusiilcJAzXBIdcFgVhB0BouP8KVPOEL0pTuEFLlDc0DhM7TNU/IzFL1wUXwo/tYat9IPDcXPZ8p3aClFBkdTISx/EwaG7YyGvgNyufAH3pPBU5R5h9eS2T1gzdrjLcLsuWJOogXiv/0WsENuAr84Vg4TkgYwESxzsH2rphi2PU40t9MUcow/cg+WaV9BnKzYVHng6RPuOaeyx74Z1o4CjrN3Uqa6gpTBBnd2j1j42ozLzyL4DlPHHtZkSf0oXh/CWBKLBBStKIa9iv7Pq5GUOtJx9JA0mJCOxCJVycE7ivTnXrU0uCoYutN1aXi5Zxd2AWIp5BcBGFNcLLWUHhkaApMeEomn62uMGZJPSO0b+eONicK9L88nmGtC4HEKGHtvO/SMETQzHxA4+koDFOlMhnnKR1tTOP2j0f4BZGlLd250JTYeU= phpuser@master

git中使用ssh

配置

一般在git托管平台里面会有配置ssh的地方,一般都在用户设置里面配置, 如码云的: 移到用头像上面->选择设置->然后在左侧菜单栏里面有ssh公钥的选择->选择添加,把获取到的内容复制进去然后保存

使用ssh链接

在码云的代码仓库里面克隆下载按钮,选择ssh的链接然后进行复制,然后克隆

git clone gitssh链接

这个时候你就发现不需要用户名和密码登录了

Linux ssh免用户名密码登录登陆

使用命令

ssh-copy-id -i 密钥路径 用户名@域名
例:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.119.129 #回车输入密码,这个步骤就将的公钥复制到了linux服务器下面~/.ssh/authorized_keys文件里面

之后在使用ssh 命令进行登录

ssh -i ~/.ssh/id_rsa root@192.168.119.129 #回车登录,这个时候就不用输入密码了

ssh-keygen生成常用参数命令

使用命令:

ssh-keygen help #回车
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa] [-m format]
                  [-N new_passphrase] [-C comment] [-f output_keyfile]
       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-m format]
                   [-f keyfile]
       ssh-keygen -i [-m key_format] [-f input_keyfile]
       ssh-keygen -e [-m key_format] [-f input_keyfile]
       ssh-keygen -y [-f input_keyfile]
       ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
       ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
       ssh-keygen -B [-f input_keyfile]
       ssh-keygen -D pkcs11
       ssh-keygen -F hostname [-f known_hosts_file] [-l]
       ssh-keygen -H [-f known_hosts_file]
       ssh-keygen -R hostname [-f known_hosts_file]
       ssh-keygen -r hostname [-f input_keyfile] [-g]
       ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
       ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
                  [-j start_line] [-K checkpt] [-W generator]
       ssh-keygen -s ca_key -I certificate_identity [-h] [-U]
                  [-D pkcs11_provider] [-n principals] [-O option]
                  [-V validity_interval] [-z serial_number] file ...
       ssh-keygen -L [-f input_keyfile]
       ssh-keygen -A
       ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
                  file ...
       ssh-keygen -Q -f krl_file file ...

一般用的参数是-t -C -f

-t 指定密钥的类型
-C 密钥的备注或者注释
-f 密钥的名称和路径

使用命令例子:

ssh-keygen -t 密钥类型 -C "备注内容" -f 名称和路径
例如:
ssh-keygen -t rsa -C "密钥备注" -f ssh/my-ssh
# ras指的就是类型
# 密钥备注则是直接在公钥文件中最后面
# -f后面的是路径和名称,如果你的路径是相对路径,则生成的密钥就是在你当期的目录下面生成ssh文件夹及ssh/my-ssh密钥这个文件