Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

CentOS8.2に秘密鍵・公開鍵を作成してVSCodeでSSH接続する

はじめに

今までAWSのサーバーにSSH接続していましたが、ローカル開発環境でCentOSを動かしたところ、鍵の作成だったり色々必要なのでメモしました。

環境

サーバー側 CentOS8.2
クライアント側 Windows10
(SSHクライアントソフト VSCode)

前提

・VSCodeにRemote-SSHがインストールされていること
 参考:VSCode の Remote - SSH 機能を使って EC2 上で開発する
・サーバーにtarがインストールされていること
 ※SSH接続の際に、アーカイブを展開する必要があるようです。インストールはyum install -y tarでできます。
・SSHサーバーのルートログインが許可されていること
 ※推奨されませんが、今回はテストのためrootでログインしています。

大きな流れ

①サーバー側で秘密鍵・公開鍵を作成
②秘密鍵をクライアント側にアップロード
③VSCodeでサーバーにSSH接続

①サーバー側で秘密鍵・公開鍵を作成

秘密鍵・公開鍵の作成は仕組み的にはサーバー側、クライアント側「どちらで実行しても良い」そうですが、クライアント側で作成した公開鍵をサーバー側に転送するほうが一般的のようです。今回は、Linuxでの鍵作成をしたかったのでサーバー側(CentOS)で作成します。

秘密鍵・公開鍵を作成
# ssh-keygen -t RSA -b 4096
Generating public/private RSA key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

ssh-keygenは秘密鍵と公開鍵を作成するコマンドです。
書式 ssh-keygen -t 暗号方式 -b ビット数
オプション -t 暗号方式を指定
      -b ビット数を指定

-fオプションで作成場所を指定していない場合、/root/.ssh/id_rsaに保存してよいか聞かれるのでENTERを押します。
秘密鍵に設定するパスフレーズの入力を求められます、なしでいいのでそのままEnterを押します。

作成完了
# ssh-keygen -t RSA -b 4096
Your identification has been saved in /root/.ssh/id_rsa.  
Your public key has been saved in /root/.ssh/id_rsa.pub.  
The key fingerprint is:  
SHA256:7YG9R04q702Nje8GSOEH7kdrgrsgrsgLYbTqNTbWvU root@localhost.localdomain  
The key's randomart image is:  
+---[RSA 4096]----+  
|                 |  
|  .+ .. . o      |  
| .+.=..+ o o     |  
|.. o++. o++ .    |  
|.  ooo. SE+oo    |  
| o .+o   .oB.=   |  
|  +o.   . + *.o  |  
|   .o    o + ..  |  
|  .. .   .o .oo  |  
+----[SHA256]-----+
~/.ssh/に鍵が作成されていることを確認
# ls -al ~/.ssh/
-rw-------. 1 root root 3389 11月  3 01:08 id_rsa 
-rw-r--r--. 1 root root  752 11月  3 01:08 id_rsa.pub

※.pubと末尾に記載されている方が公開鍵です。(publicの略)

公開鍵のファイル名をauthorized_keysに修正します。

公開鍵のファイル名をauthorized_keysに修正
# mv id_rsa.pub authorized_keys

これで公開鍵と秘密鍵の生成は完了です。
次に秘密鍵をクライアント側に移動させます。

②秘密鍵をクライアント側にアップロード

scpコマンドを使ってもよいのですが、今回はTeratermの機能を利用してクライアント側に移動させました。
File→SSH_SCP
Fromに/root/.ssh/id_rsa
Toに任意のWindowsフォルダ
 参考:Teratermでコマンドを使わず簡単にファイル転送する方法

④VSCodeでサーバーにSSH接続

VSCodeの左ペインにモニターのようなアイコンがあるのでクリック
リモートエクスプローラーが開くのでSSH TARGETSの右側の+を押下
コマンド入力画面が開くので、以下を入力
ssh -l root -i "Windowsフォルダ内の秘密鍵のパス" SSHサーバーのホスト名もしくはIPアドレス
Enterを押すと接続完了です。

SSHはsshプロトコルを用いて別ホストに接続するコマンドです。
書式 ssh オプション ホスト名
オプション -l ユーザーを指定
      -i 秘密鍵を指定

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away