원스톱 솔루션: SSH 공개 키 원격 로그인, Linux 또는 Github/Gitee에 연결

1. 로컬 Vscode 원격 암호 없이 Linux에 로그인

1. VScode에 Remote-SSH 확장 추가

  • VScode에서 확장 저장소를 열고 Remote-SSH를 검색합니다.
    원격 SSH
  • Vscode에서 ctrl + shift + p(Windows 시스템) 명령을 사용하여 명령 패널을 열고 Remote-SSH를 입력한 다음 아래 그림과 같이 ***Remote-SSH:Open SSH Configurationo File***을 클릭합니다.
    여기에 이미지 설명 삽입
  • C:\Users\username.ssh\config 파일을 입력하고 다음을 입력합니다.
Host xxx     
  HostName  xxx	
  User xxx
  IdentityFile xxx

그 중
- Host는 아무렇게나 시작할 수 있음(HostName과 같을 수 있음)
- HostName은 연결할 Linux 서버 또는 가상 머신 ip를 씁니다(쿼리 명령: ifconfig -a )
- 사용자는 로그인할 사용자 이름을 씁니다. 루트로
- IdentityFile은 일반적으로 C:\Users\username.ssh 폴더(이 폴더는 숨겨진 폴더임)에 나중에 생성된 SSH 개인 키를 작성합니다.

2. 비밀 키 구성

  • Windows 시스템에서 명령줄을 입력하고(키보드: win+R, cmd 입력 또는 다른 방법 사용) 명령줄에 명령을 입력합니다.
# 注意,如果你直接使用这样的命令,然后一路回车,
# 会默认在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
  • Linux_id_rsa.pub를 서버 ~/.ssh 디렉터리에 복사한 다음(여러 방법이 있으며 xftp와 같은 다른 연결 도구를 사용할 수 있음) Linux bash에서 실행합니다.
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文件(若不存在则创建)
  • 비밀 키를 생성한 후에는 로컬 Windows 또는 VScode로 돌아가서 C:\Users\username.ssh 폴더 아래의 구성 파일(앞서 언급)에 작성하기만 하면 됩니다.
Host xxx     
  HostName  xxx	
  User xxx
  IdentityFile "C:\Users\*****\.ssh\id_rsa"

그 중 IdentityFile은 생성된 개인 키 파일의 위치에 해당합니다.

  • 다음으로 VScode에서 비밀 없이 Linux 가상 머신 또는 원격 서버에 로그인할 수 있습니다.

2. Linux 가상 머신(또는 Linux 서버) 연결 관리 Github

Linux 연결 관리 Github의 기본 단계는 위의 프로세스와 동일하지만 이때 Linux는 클라이언트에 해당하고 Github은 서버에 해당합니다.

1. bash에서 다음 명령을 순차적으로 실행하여 비밀 키를 생성합니다.

# 因为我后面还有连接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
# 接下来问的两次和之前相同

2. github에 웨어하우스(원격 라이브러리) 생성

  • 나는 이것에 대해 이야기하지 않을 것입니다.

3. 생성된 공개키를 Github에 추가

  • Github 입력->개인 계정에 로그인->오른쪽 상단 모서리에 있는 아바타 클릭-> 설정 선택 ->선택-> SSH 및 GPG 키- > 새 SSH 키 선택 ->공개 키 파일 github_id_rsa의 내용을 붙여넣습니다 . 게시 합니다(제목 제목 맞춤설정).

4. 테스트 연결

ssh -vT [email protected]
  • 실행에 성공하고 ~/.ssh 폴더에 known_hosts 파일이 없으면 시스템에서 한 번 묻고 yes를 입력하면 known_hosts 파일이 생성되며 실제로 Github에 연결된 공개 키를 기록합니다.
  • ***권한 거부됨(공개키)***이 나온다면 일반적인 문제가 발생했다는 뜻이고, 제가 오래전부터 노력했다는 뜻입니다~ 간단하게 말씀드리자면 제가 처음 취한 방법은
    in에서 실행하는 것이었습니다. 세게 때리다:
# 将专用密钥添加到ssh-agent的高速缓存中
ssh-add ~/.ssh/github_id_rsa

이 명령을 실행하고 나면 정말 가능하다는 것을 증명하지만 "cache" 라는 단어를 볼 때 문제가 있을 수 있음을 깨달을 수 있어야 합니다 . 다음 날 다시 켰을 때 거부됨(publickey) 다시 나타남! 그리고 또 다른 문제를 발견했습니다.

问题1:在Vscode中远程打开Linux终端,git push的时候,出现错误
问题2:重启电脑后,Permission denied(publickey)反复出现

위의 두 가지 문제를 해결하는 두 가지 방법이 있습니다.

第一种方式(临时性):
之前通过ssh-add命令将密钥添加到ssh-agent
是只在Linux中进行的,为了VScode中同步,你需要在VScode中打开Linux终端,
然后执行相同的命令,这样你就可以同时在Linux远程服务器和本地VScode中远程同步Github了。
第二种方式(永久性):参见步骤5.

5. Linux에서 ssh의 구성 파일 구성

  • Linux에서 ~/.ssh 폴더를 입력하고 구성 파일을 만든 후 파일에 다음을 입력합니다.
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
  • 이 단계에서 수행하는 작업은 여러 ssh 키 쌍을 구성하고 여러 ssh를 영구적으로 관리하는 것 입니다.
  • 그 중 PreferredAuthentications publickey: PreferredAuthentications는 클라이언트 인증 방법의 순서를 지정하는 것입니다. 이 옵션의 기본값은 "gssapi-with-mic, hostbased, publickey, keyboard-interactive, password"입니다.
  • 그 중 호스트는 임의로 시작할 수 있으며 동일한 호스트 이름에 대해 여러 호스트를 구성할 수도 있습니다 .

6. Github 동기화

  • 참고: SSH는 비밀번호 없는 원격 로그인을 위한 것으로 사실 필수는 아니지만 편의를 위한 것입니다. SSH 원격 로그인을 하지 않으면 다음과 같은 두 가지 상황이 발생합니다.
1.VScode远程连接Linux服务器时,每次打开VScode选择打开远程Linux文件时,
都需要输入密码;
2. Linux服务器或者本地Windows(在二者SSH连接之后),执行git push等命令
同步Github时,都要输入邮箱和密码。
  • 마지막으로 Github에서 자신의 코드를 호스팅하고 Linux 서버 또는 로컬 Windows에서 폴더를 열고 생성한 후 다음 명령을 순서대로 실행합니다.
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 [email protected]:yourname/test.git
# 推送
git push -u origin master

3. 요약

위의 내용은 다음을 수행합니다.

  • Linux에 대한 VScode 원격 비밀번호 없는 로그인(가상 머신 또는 Linux 서버일 수 있음)
  • Linux는 Github/Gitee를 동기화하며 Gitee 동기화 작업은 Github 동기화와 거의 동일합니다.
  • Git 동기화 프로세스는 로컬 컴퓨터 동기화 Github/Gitee에도 적용 가능합니다.

4. 참조

VScode + Remote-SSH 비밀 없는 연결 서버
git Github
권한 거부됨(publickey)
Github 권한 거부됨: ssh add agent has no identities
여러 ssh 키 쌍을 구성하고 여러 ssh를 영구적으로 관리
Gitee는 여러 계정을 구성합니다 자세한
ssh: ssh-agent, ssh- 추가하다

이상

추천

출처blog.csdn.net/zp_stu/article/details/127298027