赞
踩
Host xxx
HostName xxx
User xxx
IdentityFile xxx
其中,
- Host可以随便起(可以与HostName一样)
- HostName写要连接的Linux服务器或者虚拟机ip(查询命令:ifconfig -a)
- User写要登录的用户名,比如root
- IdentityFile写后面生成的SSH私钥,一般在C:\Users\用户名.ssh文件夹下(该文件夹为隐藏文件夹)
# 注意,如果你直接使用这样的命令,然后一路回车,
# 会默认在C:\Users\用户名\.ssh文件夹下生成 id_rsa、id_rsa.pub两个文件
# id_rsa(私钥,放在客户端,这种情况下就是你的Windows系统)
# id_rsa.pub(公钥,放在服务端,这种情况下就是你的Linux虚拟机或者你的服务器)
ssh-keygen -t rsa # 或 ssh-keygen
# 事实上,ssh-keygen后面可以跟很多参数,比如:
# -t = The type of the key to generate (密钥的类型)
# -C = comment to identify the key (用于识别这个密钥的注释,一般写邮箱)
# 为了区分生成的秘钥文件,可以用-f参数指定生成的秘钥文件名(我就是这样做的)
ssh-keygen -t rsa -f C:\Users\用户名\.ssh\Linux_id_rsa
cd ~/.ssh
# 为了保险起见,可以进入Linux_id_rsa.pub文件查看是否正常
cat -A Linux_id_rsa.pub
# 比如Windows上传到Linux系统的文本文件,一般会有 ^M ,如果你没有出现这种情况,则跳过接下来的一条命令:
dos2unix Linux_id_rsa.pub # 你也可以通过其他方式,自行百度
# Linux_id_rsa.pub(公钥文件)没有什么问题之后,执行以下命令:
cat Linux_id_rsa.pub >> authorized_keys # 经过验证,此步应该是必须
# authorized_keys文件中存储着本地系统可以允许远端计算机系统ssh免密码登陆的账号信息
# 你也可以通过xftp连接linux,然后打开Linux_id_rsa.pub将其中的内容复制到authorized_keys文件(若不存在则创建)
Host xxx
HostName xxx
User xxx
IdentityFile "C:\Users\*****\.ssh\id_rsa"
其中IdentityFile中对应的是生成的私钥文件所在位置。
Linux连接管理Github基本步骤和上述过程一致,只不过此时的Linux相当于客户端,而Github相当于服务端了。
# 因为我后面还有连接Gitee,为了区分,指定生成了秘钥文件名
ssh-keygen -t rsa -C "your email" -f ~/.ssh/github_id_rsa
# 以上命令执行过程中,会问你两次
# 第一次是:Enter passphrase (empty for no passphrase): 直接回车就行
# 第二次是问你确认以上passphrase,再次直接回车就行
# 如果你不使用 -f参数指定文件名,那么会问你三次,其中第一次是问你把秘钥文件放在哪,
# 若是直接回车的话,会默认放在~/.ssh文件夹下,并且默认秘钥文件名为:id_rsa和id_rsa.pub
# 接下来问的两次和之前相同
ssh -vT git@github.com
# 将专用密钥添加到ssh-agent的高速缓存中
ssh-add ~/.ssh/github_id_rsa
执行完该命令证明确实可行,但看到 “缓存” 两个字,你应该能意识到可能还会出现问题,果然在我高兴的关闭电脑,第二天再打开的时候问题 Permission denied(publickey) 又出现了!并且还发现了另外的问题:
问题1:在Vscode中远程打开Linux终端,git push的时候,出现错误
问题2:重启电脑后,Permission denied(publickey)反复出现
解决以上两个问题有两种方式:
第一种方式(临时性):
之前通过ssh-add命令将密钥添加到ssh-agent
是只在Linux中进行的,为了VScode中同步,你需要在VScode中打开Linux终端,
然后执行相同的命令,这样你就可以同时在Linux远程服务器和本地VScode中远程同步Github了。
第二种方式(永久性):参见步骤5.
Host github.com
HostName github.com
IdentityFile ~/.ssh/github_id_rsa
PreferredAuthentications publickey
User xxx
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
User xxx
PreferredAuthentications publickey
: PreferredAuthentications 是为了指定客户端身份验证方法的顺序,此选项的默认值是:“gssapi-with-mic, hostbased, publickey, keyboard-interactive, password”1.VScode远程连接Linux服务器时,每次打开VScode选择打开远程Linux文件时,
都需要输入密码;
2. Linux服务器或者本地Windows(在二者SSH连接之后),执行git push等命令
同步Github时,都要输入邮箱和密码。
cd yourfile
git config --global user.name “your name”
git config --global user.email “your email”
git config --list # 列出关于当前git的所有配置信息
git init # 初始化
git add . # 添加文件
git commit -m "此次提交要备注的信息" # 提交并备注信息
# 提交到Github
# 添加远程仓库
git remote add origin git@github.com:yourname/test.git
# 推送
git push -u origin master
以上完成了以下内容:
VScode + Remote-SSH 免密连接服务器
git Github
Permission denied (publickey)
Github permission denied: ssh add agent has no identities
配置多个ssh密钥对并且永久多ssh管理
Gitee配置多个账号详解
ssh:ssh-agent、ssh-add
以上
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。