logo
Published on

プログラミング初心者のためのはじめてのssh接続

Authors

Linuxパソコン・サーバーのコマンドライン、Bashプログラミング言語(スクリプティング言語)やWindows、Macでも利用可能なセキュアシェル、SSHについて、プログラミング初心者向けのチュートリアルを紹介します。

Q. どうやってssh接続すればいいの?

まずは基本用語を抑えよう。

  • cmd(DOS;batch) ... windowsで広く普及しているシェル言語。あまり出番はないが、管理者権限の必要となる一部のpowershellが行えない操作で活躍するよ
  • powershell ... windowsで広く普及しているシェル言語。最近オープンソース化されて需要が上がっているけどbashには及ばないよ。
  • bash ... Linuxで広く普及しているシェル言語
  • WSL bash ... Windows subsystem for Linux。最近のWindowsアプデで実装された新機能。windows上でbash言語が使えちゃうさいつよの代物だよ。
  • conemu ... Windowsでシェル言語を扱うためのソフトウェア。ターミナルやコマンドライン、コンソールと呼ばれているよ。
  • xterm ... Linuxでシェル言語を扱うためのソフトウェア。ターミナルやコマンドライン、コンソールと呼ばれているよ。
  • terminator ... Linuxでシェル言語を扱うためのソフトウェア。ターミナルやコマンドライン、コンソールと呼ばれているよ。
  • コマンド ... シェル言語の操作のこと。例えば新しいフォルダを作るmkdirなどがそれに当たるよ。コマンドは拡張的に増やすことができるけど、初期段階のLinuxでは700程度のコマンドが利用できるよ。
  • ssh ... リモートにあるパソコン - ホストマシンと呼ばれるよ。反対にこちらで操作しているマシンはクライアントマシンと呼ばれるよ。 - にアクセスしたり操作したりするための技術だよ。sshでアクセスしたパソコン上では、bash言語やコマンドが自由に使えるよ。

これがconemu。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_2768433e-d690-4966-844d-99511982f799.png

conemuをダウンロードしよう。

Download ConEmu latest release

wslをインストールしよう。

WSL bash on ubuntu on windows インストール手順

wslについてもっと知りたいかな?

WSL(Windows Subsystem for Linux)を初期から使っている僕がLinuxやプログラミングの初心者向けにWSLのメリットを解説してみる

今回は、conemu上でwsl bashを使用してssh接続を行うよ。

sshコマンドは以下のようなフォーマットだよ。

ssh -p [port] -i [identityFile] [username]@[host]

これを僕の環境でやると、以下になるよ。

ssh -p 10022 -i ~/.ssh/shit.key shit@sv7247.xserver.jp

まずは準備。

サーバー側でsshを有効化してね。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_f2c800fb-de28-479f-8c85-1b272ce37126.png

アイデンティティファイルをダウンロードしよう。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_ba0509b9-cf15-49b4-af89-7e425b8c1121.png

サーバーのホストアドレスを確認しよう。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_dd2591d1-2f3c-4ac2-89ee-197b5a4f9e8f.png

コマンドの説明をしていくよ。

-p [port] ... 普通は22ポートがsshのポートになっているよ。しかしながら、セキュリティ上の理由でポート番号を変えているサーバー管理者も多いよ。エックスサーバーもその一つで、10022がエックスサーバーのsshポートになるよ。

List of TCP and UDP port numbers - Wikipedia

-i [identityFile] ... ダウンロードしたアイデンティティファイルのパスを入力しよう。/mnt/c/Users/user/Downloads/iden.keyみたいなファイル名になるよ。

[username]@[host] ... sshコマンドの第一引数。ユーザー名とサーバー名を@でつなげて記述するよ。ホスト名はIPアドレスでもおkだよ。

コマンドがにゅうりょくできたら、enter。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_8e573158-8b57-4ef5-8770-96cf40ccfb9b.png

アイデンティティファイルを作ったときに入力したパスワードを入力しよう

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_637c93c0-0610-4371-8bf0-3a2595b92977.png

これでリモートのサーバーにssh接続ができたことになるよ。

Q. sshクライアントってなに?

昔の人が使っていたものの名残だよ。使いたかったら使っても良いけどメリットはないよ。conemuなどのコンソールソフトウェアの機能制限版という認識でいいよ。 または、特定企業など使用できるソフトウェアが限定されている環境で使われることもあるね。

Q. sshって何ができるの?

sshはだいたい何でもできるよ。とても便利なのでぜひ使いこなしてほしい技術だよ。

  • rsync ... ファイルをホストとクライアント間で差分バックアップできるよ。cpコマンドの強化版。とても早いよ。
  • sshfs ... ファイルシステムをまるごとマウントできるよ。
  • ssh -t ... トンネリング。複数のpcをssh接続の踏み台にできるよ。sshd_configファイルの編集で特定IPからのみアクセスを許可することによって、セキュリティを強化できるよ
  • ssh -R 52698:localhost:52698 ... クライアントからホストへのポート転送
  • ssh -L 4567:localhost:4567 ... ホストからクライアントへのポート転送
  • ssh -X ... x11フォワーディングができるよ。wsl bash上やLinux上のソフトウェアをクライアントのlinuxやwindowsで開けるよ。