0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SSHを楽にしたい...

Posted at

そもそもSSHでリモートするのに、まだパスワード使ってるの?

...というのも現代において、使えるものはたくさん増えてきた。
だから使えるものを使って、使い魔くる!

これを実行すれば、最終的には、ssh dev-svだけで接続できるようになる。

環境準備

前置き

環境はまず整えてからじゃなきゃ使えないものだ。
エンジニアになって、一番難しいのは、環境を整える事だと思う。
毎回、同じならいいけど...何故だか?同じにならないこともあるし、全く別物になったりする。
今回紹介する内容は、macOSでの接続となっている。(windowsで開発した事ない...てか、したくないw)

接続する予定のサーバはCentOS7である。
”SELiunx"も"firewall"も同時に起動されている。
接続に使う回線は、ローカルでもグローバルでもどちらでも対応可能だと思う。

本題

はじめに、接続先のサーバ側の設定。
この操作は、全て"root"で行っている。
設定する順番はどちらでも構わない。

接続するための情報
  • 接続ユーザー: hoge (なお、"hoge"を自分のユーザー名に置き換えてください。)
  • 接続先ホスト: example.com ("example.com"は、例です。自分のリモート先と置き換えてください。)
# sshの設定ファイルを更新する
# 証明書で接続できるようにするためにコメントアウトを外す。
sed -i -e "s/#PubkeyAuthentication/PubkeyAuthentication/g" /etc/ssh/sshd_config
sed -i -e "s/#AuthorizedKeysFile/AuthorizedKeysFile/g" /etc/ssh/sshd_config
# or
vi /etc/ssh/sshd_config
# "#PubkeyAuthentication yes"                => "PubkeyAuthentication yes"
# "#AuthorizedKeysFile .ssh/authorized_keys" => "AuthorizedKeysFile .ssh/authorized_keys"

# firewallの設定する
# デフォルトで接続してる場合は、serviceで許可をしておくといい。
firewall-cmd --add-service=ssh --zone=public --permanent
# or
# SSHの許可をする。ポートで指定してる場合、一番目のポート番号を変える。
firewall-cmd --add-port=22/tcp --zone=public --permanent
# 設定を反映する
firewall-cmd --reload

# 設定を確認する
firewall-cmd --list-all-zones
# public (active)
#  ...
#  services: ssh <=これが追加されていることを確認
#  ports: 22/tcp <=もしくは、指定したポート番号
#  ...
# ---- 一般ユーザー権限の場合は、ここまで -----

# ---- 管理者権限に移行できるようにする  -----
# 次に接続するためのユーザーを追加する
useradd hoge # ユーザーを作成
passwd hoge # 作成したユーザーのパスワードを設定、初期接続時に必要となるため。

# 必要に応じて、"wheel" グループに追加する。基本的に、管理者にならないのであれば、いらない。
usermod -aG wheel hoge
cp -p /etc/pam.d/su /etc/pam.d/su.b # ファイルが壊れた時のために、バックアップ用のコピーを取っておく。

# 設定ファイルのコメントアウトを外す。
sed -i -e "$(cat /etc/pam.d/su | grep -n 'pam_wheel.so' | awk -F':' '{print $1}') s/# //g" /etc/pam.d/su
# or
vi /etc/pam.d/su
# "#auth		required	pam_wheel.so use_uid" => "auth		required	pam_wheel.so use_uid"
# 反映後、exitで抜け。追加ユーザでログインでき、rootユーザになれることを確認する。可能であれば、sshからも試す。

クライアント変(mac側)

大抵の記事では、scpでリモート先に公開鍵を送信し、コピーして権限付与まで行っているが、
ssh-copy-idを使えば、接続先に"authorized_keys"が自動で登録される。


whoami # hogeと表示される。

# もしリモート先の登録ユーザーと"whoami"が異なる場合は、"$(whoami)"の部分を"hoge"に読み替えて、変更する。
ssh-keygen -C "$(whoami)@$(hostname)-$(date -I)"
ssh-copy-id -i ~/.ssh/id_rsa.pub hoge@example.com

vi ~/.ssh/config
# 以下を追加する
# Host ex-sv # わかりやすい名前をつけておく
#    User hoge # 接続許可されたユーザー名
#    HostName example.com # 接続先ホストドメイン or IPアドレス
#    port 22 # 接続可能なポートに合わせる
#    IdentityFile ~/.ssh/id_rsa # リモート先に送ったシークレットキーの公開じゃない方

# 最後に、"ssh ex-sv"を実行して、接続が可能であることを確認する
ssh ex-sv

最後に...

証明書でログインができることを確認したら、以下の設定を実行しておくと、
他者からのログインや攻撃を防ぐことが可能。

vi /etc/ssh/sshd_config
# PermitRootLogin yes => no
# PasswordAuthentication yes => no

macのターミナルにあるツール

ターミナルにあるツールに、"shift+command+K"で起動する"新規リモート接続"というものがある。
これは、事前にコマンドを登録しておけるので、覚えておく必要がなくなる。
以下に、イメージだけ貼っておく。
詳しい説明はここではしないことにする。

左の"+"でサービス名を登録する。

スクリーンショット 2020-10-15 16.32.16.png

右の"+"で、接続先を登録できる。その際、ホスト名ではなく、configに登録した"Host"名を指定する。

スクリーンショット 2020-10-15 16.30.59.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?