Mac から Ubuntu へ ssh するのに手こずりました
毎回、パスワードを打つのが面倒くさかったので、公開鍵暗号方式で認証しようとしたところ
なかなかに時間を食われたのでまとめておこうと思います。
opensshはubuntuですのでインストールの時に突っ込んでおきます。
ないならapt-getあたりでhogehoge
sshはVersion 2で暗号方式はrsaを使います。
以下がサーバのsshデーモンの設定
一応、初期ファイルをバックアップしておいたほうがいいかもしれません。
次に秘密鍵と公開鍵の生成と設定です。
これが一番手間取りました。
ぐぐると結構出てくるんですが、やり方がだいたい2通りくらいあるようで、ちょっと混乱しがちです。
基本的にクライアント(Mac)が主体の操作です。
バージョン2なので以下のように鍵を生成します。
ここで大事なのは鍵の名前を付けないでそのままというところです。
わかりやすい名前をつけていたせいで、だいぶ手こずりました_:(´ཀ`」 ∠):_
$ man sshをしてみると
つまり、秘密鍵はバージョン2を使うなら~/.ssh/id_rsaにしろということ
default値なのでconfigで変えられるのかな?
次にクライアントからサーバ(Ubuntu)へ共有鍵(id_rsa.pub)を設定します。
場所は設定ファイルのAuthorizedKeysFileで指定したものなので,
%h/.ssh/authorized_keysです。
何かしらを使ってサーバに共有鍵をコピーし、authorized_keysに追記してください。
authorized_keysのパーミッションは644です。
.sshディレクトリ(700)や、ファイルのパーミッションでうまくいかない時もあるようなので注意が必要です。
これで設定は済んだはずなのでサーバのsshデーモンを再起動させます。
余談ですが、以前は
$ sudo /etc/init.d/ssh restart
としていましたが、少し前のバージョンから上記の方が推奨になっていました。
今のところはどちらも同じ動きをするようです。
あとは、普通にクライアントからsshするだけ
以下を参考にしました。
opensshはubuntuですのでインストールの時に突っ込んでおきます。
ないならapt-getあたりでhogehoge
sshはVersion 2で暗号方式はrsaを使います。
以下がサーバのsshデーモンの設定
一応、初期ファイルをバックアップしておいたほうがいいかもしれません。
# /etc/ssh/sshd_config # ssh2を使用 # 使用するポート Port 74 # 使用するsshバージョン Protocol 2 # HostKeys for protocol version 2(秘密鍵ファイル) HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key # 特権分離の使用可否 # yesだとプロセスは非rootユーザ(デフォルトは sshd ユーザ)権限で動作する UsePrivilegeSeparation yes # Loggingする時のファシリティコード SyslogFacility AUTH LogLevel INFO # ログインする制限時間 LoginGraceTime 120 # rootログインの可否 PermitRootLogin no # パーミッションなども確認する StrictModes yes # 公開鍵暗号方式を使って認証する PubkeyAuthentication yes # 公開鍵ファイルを設定 AuthorizedKeysFile %h/.ssh/authorized_keys # ~/.rhosts and ~/.shosts ファイルを読み込まない IgnoreRhosts yes # similar for protocol version 2 HostbasedAuthentication no # ~/.ssh/known_hosts ファイル(ユーザごとのホスト鍵リスト)を無視するか否か IgnoreUserKnownHosts no # パスワード認証可否 PasswordAuthentication no # 空のパスワードを許可するか否か PermitEmptyPasswords no # チャレンジレスポンス認証可否 ChallengeResponseAuthentication no Subsystem sftp /usr/lib/openssh/sftp-server UsePAM no
次に秘密鍵と公開鍵の生成と設定です。
これが一番手間取りました。
ぐぐると結構出てくるんですが、やり方がだいたい2通りくらいあるようで、ちょっと混乱しがちです。
基本的にクライアント(Mac)が主体の操作です。
バージョン2なので以下のように鍵を生成します。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): #ここで何も入力しないこと! Enter passphrase (empty for no passphrase): #適当なパスフレーズ Enter same passphrase again: Your identification has been saved in /Users/hoge/.ssh/id_rsa. Your public key has been saved in /Users/hoge/.ssh/id_rsa.pub. The key fingerprint is: e3:29:2d:gb:4d:f2:12:c2:23:57:a4:6a:1b:4f:20:75 hoge@hoge.local The key's randomart image is: +--[ RSA 2048]----+ | | | .| | .oE| | ....| | S ... .| | + + ..+..| | . = ...+ +.| | . . =o =. | | . o+ ..| +-----------------+
ここで大事なのは鍵の名前を付けないでそのままというところです。
わかりやすい名前をつけていたせいで、だいぶ手こずりました_:(´ཀ`」 ∠):_
$ man sshをしてみると
-i identity_fileと-iオプションの部分に書いてありました。
Selects a file from which the identity (private key) for RSA or DSA authentication is read.
The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for protocol version 2.
つまり、秘密鍵はバージョン2を使うなら~/.ssh/id_rsaにしろということ
default値なのでconfigで変えられるのかな?
次にクライアントからサーバ(Ubuntu)へ共有鍵(id_rsa.pub)を設定します。
場所は設定ファイルのAuthorizedKeysFileで指定したものなので,
%h/.ssh/authorized_keysです。
何かしらを使ってサーバに共有鍵をコピーし、authorized_keysに追記してください。
authorized_keysのパーミッションは644です。
.sshディレクトリ(700)や、ファイルのパーミッションでうまくいかない時もあるようなので注意が必要です。
これで設定は済んだはずなのでサーバのsshデーモンを再起動させます。
$ sudo service ssh restart
余談ですが、以前は
$ sudo /etc/init.d/ssh restart
としていましたが、少し前のバージョンから上記の方が推奨になっていました。
今のところはどちらも同じ動きをするようです。
あとは、普通にクライアントからsshするだけ
$ ssh USER@SERVER
以下を参考にしました。
sshd の設定(sshd_config)
http://www.nina.jp/server/slackware/openssh/sshd_config.html
助かりました!
返信削除お役にたったようで何よりです
削除