SSHコマンドで別のサーバーに接続する
今度業務でSSHを触りそうだったので先に予習しておこう~
SSHとは?
パワーアップしたtelnet(他のCPを遠隔操作する時に使う仕組み)であり、「ネットワーク経由で他のCPの主にサーバーに接続して遠隔操作する仕組み」
本来telentはやり取りする情報をパスワードなども含め暗号化せずそのまま送る🙁💧危険
この暗号化してないそのままの状態は「平文」という。
このままでは危険だ!暗号化して送れるようにしたtelentを「SSH」という🌟
「Secure Shell(セキュア・シェル)」の略
どうやって動かすのか
クライアント(接続する側)とサーバー(接続される側)間で通信します。
認証方法として、パスワード認証と公開鍵認証があります。
パスワード認証と公開鍵認証の設定方法
パスワード認証
ssh
コマンドで接続したら毎回パスワードを求められ打つだけ
公開鍵認証
こちらの方が安全なため推奨される🥺🍎
サーバー側に公開鍵を登録しておき、クライアント側に秘密鍵を保持しておけば、その後は接続するたびにパスワードを入力せずにSSH接続できます
[手順]
- ローカルで公開鍵と秘密鍵を作成
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(公開鍵)が生成されます。
- 公開鍵をサーバーにコピー
ssh-copy-id user@ホスト名またはIPアドレス
// 例)ssh-copy-id user@192.168.1.100
これで、ローカルの公開鍵(id_rsa.pub)がリモートサーバーの ~/.ssh/authorized_keys ファイルに追加されます。
- サーバー側の設定確認
サーバーにSSH接続して、~/.ssh/authorized_keys
ファイルに公開鍵が正しく追加された事を確認。
ssh user@ホスト名またはIPアドレス // SSH接続 パスワード必要
cat ~/.ssh/authorized_keys // 公開鍵登録確認コマンド
// きちんと登録できてる場合の出力例👇
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtX9f9+cOt/YhEwx6TxVjl2e2zNkvqG3bUwLq5g5d5zjkPB8FSxZiNzqvnG5LXt4K6+f7PXMk4B00YFxgQI1zUEwnI2Fk97WckNe+3ns9o2Z6O9VMEwFOTzNFEYmG5eLYQ== user@localmachine
- 接続確認
公開鍵認証を設定した後、再度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):
接続時の流れ
- コマンドを実行すると、パスワードを求められます(公開鍵認証を使っていない場合)。
- 正しいパスワードを入力すると、リモートサーバーに接続できます。
接続後
接続後データベースにアクセスする場合、たとえばMySQLやPostgreSQLなどのデータベース管理システムを利用するためのコマンド(例: mysql や psql)を実行することになります。
どちらのDBMSを使うかによって最初のコマンドが異なりますが、SQLの基本的な操作は共通しています。
// MySQL
mysql -u ユーザー名 -p で接続
// PostgreSQL
psql -U ユーザー名 -d データベース名 で接続
これでSQLを実行し、データベースを操作できます。
詳しくは下記記事で✌
[補足] 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