ワンストップ ソリューション: SSH 公開キー リモート ログイン、Linux または Github/Gitee への接続

1. ローカル Vscode リモートの Linux へのパスワード不要のログイン

1. VScode はリモート 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

その内、
・ホストは気軽に起動できる(HostNameと同じでも良い)
・HostNameには接続するLinuxサーバや仮想マシンのIPを書き込む(クエリコマンド:ifconfig -a
・ユーザーはログインするためのユーザー名を書き込む などroot として
- IdentityFile は、後で生成された SSH 秘密キーを通常は C:\Users\username.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 に接続されている公開キーが実際に記録されます。
  • ***Permission Denied (publickey)*** が表示された場合は、一般的な問題に遭遇したことを意味しており、私は長い間それに取り組んできました~ 簡単に言えば、私が最初にとった方法は で実行することでした
    。バッシュ:
# 将专用密钥添加到ssh-agent的高速缓存中
ssh-add ~/.ssh/github_id_rsa

このコマンドを実行すると、実際に実行可能であることがわかりますが、 「キャッシュ」という単語を見ると、問題がある可能性があることに気づくはずです。案の定、喜んでコンピューターの電源を切ったとき、問題はアクセス許可でした。翌日再度電源を入れるとdeneded(publickey)がまた出てきました!そして、別の問題も見つかりました。

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

上記 2 つの問題を解決するには、次の 2 つの方法があります。

第一种方式(临时性):
之前通过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 リモート ログインが実行されない場合、次の 2 つの状況が発生します。
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. まとめ

上記により、次のことが実現されます。

  • VScode リモート Linux へのパスワード不要のログイン (仮想マシンまたは Linux サーバーの場合があります)
  • Linux は Github/Gitee を同期します。Gitee の同期の操作は Github の同期とほぼ同じです
  • git 同期プロセスは、ローカル コンピューターの同期 Github/Gitee にも適用できます。

4. 参考資料

VScode + Remote-SSH シークレットフリー接続サーバー
git Github
アクセス許可が拒否されました (公開キー)
Github アクセス許可が拒否されました: ssh 追加エージェントに ID がありません
複数の ssh キー ペアを設定し、複数の ssh を永続的に管理します
Gitee は複数のアカウントを設定します 詳細な
ssh: ssh-agent、 ssh-追加

以上

おすすめ

転載: blog.csdn.net/zp_stu/article/details/127298027