🌵

SSHコマンドで別のサーバーに接続する

2024/12/10に公開

今度業務でSSHを触りそうだったので先に予習しておこう~

SSHとは?

パワーアップしたtelnet(他のCPを遠隔操作する時に使う仕組み)であり、「ネットワーク経由で他のCPの主にサーバーに接続して遠隔操作する仕組み」

本来telentはやり取りする情報をパスワードなども含め暗号化せずそのまま送る🙁💧危険
この暗号化してないそのままの状態は「平文」という。
このままでは危険だ!暗号化して送れるようにしたtelentを「SSH」という🌟

「Secure Shell(セキュア・シェル)」の略

どうやって動かすのか

クライアント(接続する側)とサーバー(接続される側)間で通信します。
認証方法として、パスワード認証と公開鍵認証があります。

パスワード認証と公開鍵認証の設定方法

パスワード認証

sshコマンドで接続したら毎回パスワードを求められ打つだけ

公開鍵認証

こちらの方が安全なため推奨される🥺🍎
サーバー側に公開鍵を登録しておき、クライアント側に秘密鍵を保持しておけば、その後は接続するたびにパスワードを入力せずにSSH接続できます
[手順]

  1. ローカルで公開鍵と秘密鍵を作成
ssh-keygen -t rsa -b 4096
//  -t rsa: 鍵の種類(RSA)。
//  -b 4096: 鍵の長さ(4096ビット)

// 上記を実行すると下記が出力
Enter file in which to save the key (/home/your_user/.ssh/id_rsa):

特に指定せず Enter を押すと、デフォルトの場所(~/.ssh/id_rsa)に保存されます。
次に、パスフレーズの入力を求められますが、入力しても良いし、空のままで Enter を押しても構いません。
これで、id_rsa(秘密鍵)と id_rsa.pub(公開鍵)が生成されます。

  1. 公開鍵をサーバーにコピー
ssh-copy-id user@ホスト名またはIPアドレス

// 例)ssh-copy-id user@192.168.1.100

これで、ローカルの公開鍵(id_rsa.pub)がリモートサーバーの ~/.ssh/authorized_keys ファイルに追加されます。

  1. サーバー側の設定確認
    サーバーにSSH接続して、~/.ssh/authorized_keysファイルに公開鍵が正しく追加された事を確認。
ssh user@ホスト名またはIPアドレス // SSH接続 パスワード必要
cat ~/.ssh/authorized_keys  // 公開鍵登録確認コマンド

// きちんと登録できてる場合の出力例👇
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtX9f9+cOt/YhEwx6TxVjl2e2zNkvqG3bUwLq5g5d5zjkPB8FSxZiNzqvnG5LXt4K6+f7PXMk4B00YFxgQI1zUEwnI2Fk97WckNe+3ns9o2Z6O9VMEwFOTzNFEYmG5eLYQ== user@localmachine
  1. 接続確認
    公開鍵認証を設定した後、再度SSHで接続して、パスワードなしで接続できるか確認します。

サーバーと接続する

基本的なSSH接続コマンド
ssh ユーザー名@ホスト名またはIPアドレス

// 例)ユーザー名が user、接続先のサーバーのIPアドレスが 192.168.1.100 の場合
ssh user@192.168.1.100
.
// 実行後下記が出力
Enter file in which to save the key (/home/your_user/.ssh/id_rsa):

接続時の流れ

  1. コマンドを実行すると、パスワードを求められます(公開鍵認証を使っていない場合)。
  2. 正しいパスワードを入力すると、リモートサーバーに接続できます。

接続後

接続後データベースにアクセスする場合、たとえばMySQLやPostgreSQLなどのデータベース管理システムを利用するためのコマンド(例: mysql や psql)を実行することになります。
どちらのDBMSを使うかによって最初のコマンドが異なりますが、SQLの基本的な操作は共通しています

// MySQL
mysql -u ユーザー名 -p で接続

// PostgreSQL
psql -U ユーザー名 -d データベース名 で接続

これでSQLを実行し、データベースを操作できます。
詳しくは下記記事で✌
https://zenn.dev/takeda_kaho/articles/7e47d315f38780
https://zenn.dev/takeda_kaho/articles/67466ef5e4ba75

[補足] PostgreSQL(ポストグレスキューエル)とは

PostgreSQL(ポストグレスキューエル)は、オープンソースのデータベース管理システム(RDBMS)です。
30 年の開発期間に支えられ、最も評判の良いリレーショナル データベースの 1 つです。 PostgreSQL が開発者や管理者の間で人気があるのは、傑出した柔軟性と整合性があるからです。

よくSSHで検索するとセットで出てくるLinux

WindowsでGit BashやPowerShellを使ってLinuxのコマンドが使える理由

Git Bashは、MSYS2というツールを使ってLinuxのコマンドをWindows上で実行できるようにしているからです。
WSL (Windows Subsystem for Linux)を使うと、Windows上で実際のLinux環境を動かすことができ、Linuxコマンドがそのまま使えます。
PowerShellも、Linuxコマンドに似たコマンドを提供しているため、Linuxライクな操作が可能です。
これらのおかげで、WindowsでもLinux風のコマンドが使えるようになります。

Discussion