タグ: ssh

シェルをバックグラウンドで動かし続ける

普通にシェルをバックグラウンドで動かすには、コマンドの最後に「&」をつける。

./hogehoge.sh &

みたいに。

更にこれを、sshのウインドウを閉じても継続させるには「nohup」コマンドをつける。

nohup ./hogehoge.sh &

こんなカンジで。

 

ssh のポート番号変更

ログイン方式を鍵交換方式に変更するとついでにやりたくなる、ポート番号変更。

vi /etc/ssh/sshd_config

と入力し、sshd_configを編集します。
13行目辺りに

#Port 22

とあるので、これを

#Port 22
Port 22222

とかに変更して保存。
変更したら

/etc/init.d/sshd restart

で再起動。

iptablesとかでポートの指定をしている場合はそちらも変更することを忘れずに。

ssh でログイン時に Authentication refused

ちょっと、というか結構ハマった。

鍵交換方式でクライアントからログインしようとすると弾かれる。
鍵を作りなおしてもauthorized_keysを作りなおしても弾かれる。
authorized_keysのパーミッションを700とか600にしても弾かれる。

secureのログを確認すると毎回、

Authentication refused: bad ownership or modes for directory /root/.ssh

って言われてる。
確かに[ .ssh ] ディレクトリのパーミッションは777だけど。。。

結構投げやりに変更。

chmod 700 .ssh/

行けたよ・・・

ログの確認は大事。。。

ssh ログインを公開鍵秘密鍵方式に限定する

まずは公開鍵秘密鍵の生成に書いてあるとおりに秘密鍵と公開鍵を設定しておきます。
サーバ側で

vi /etc/ssh/sshd_config

と入力し、sshd_configを編集します。
60行目辺りに

PasswordAuthentication yes

とあるので、これを

#PasswordAuthentication yes
PasswordAuthentication no

と書き換えて、パスワードでログインすることを不可に設定して保存。

/etc/init.d/sshd restart

でsshdをリスタート。

TeraTermで秘密鍵を使ってログインできることを確認します。
ログインできたら今度はパスワードでのログインが出来ないことを確認して完了。

PoderosaやWinSCPだと、Putty Private Key Files形式しか受け付けてくれないようなので汎用性は低い?かも。
自分はTeraTermなので問題ありませんが。

rsync でバックアップ作り

まずは rsync をインストール。

yum install rsync

rsync で必要なオプションは

  • -a … -rlptgoDの各オプションをまとめてつける
  • -u … 更新日付の新しいものだけ
  • -z … 圧縮して送受信
  • –delete … コピー元にないファイルは削除

ぐらいかな?
テストするときは

  • -v … 転送中のファイルを表示
  • -n … コマンドの動作テスト。

をつけるといいかも。
今の rsync コマンドはrshではなくてsshがデフォルトになっているので

-e 'ssh -i /root/.ssh/id_rsa'

オプションは必要無いっぽい。
なので

rsync --delete -auz root@192.168.1.11:/mnt/E/ /mnt/G/

これで192.168.1.11上の E-Drive から自前の G-Drive へ同期をかけることができる。
詳細なオプションは
管理者必見! ネットワーク・コマンド集 – rsyncコマンド:ITpro
とか
rsync Man Page | SS64.com
このあたりで。

motd (Message of the Day)

SSHでログインしたときに表示されるあれ。
Message of the Day の略だったらしい。
とりあえず、

vi /etc/motd

で、このテキストファイルを編集すれば表示されるようになる。

公開鍵秘密鍵の生成

sshでログインするときにパスワード入力が面倒。
もしくはscpとかやるときに自動でログインしたい。
というときのために。

ssh がインストールされていなかったらクライアント側サーバ側ともに事前にインストールしておく。

yum install openssh-clients

クライアント側(あやつる側)(192.168.1.10)で

ssh-keygen -t rsa

これで鍵生成。
作るときに

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

とか聞かれる気がする。
passphrase 入れると毎回聞かれて自動でログインって言う目的に合致しないので、
今回入れない。
rootユーザでログインしていれば[ /root/.ssh/ ]配下に id_rsa と id_rsa.pub が出来るはず。
id_rsa.pub が公開鍵なので色々なところに使いまわす。
鍵を作ったクライアントがわかるように

mv id_rsa.pub id_rsa.pub.192.168.1.10

で変更しておく。

そのまま

scp id_rsa.pub.192.168.1.10 root@192.168.1.11:/root/.ssh/id_rsa.pub.192.168.1.10

で id_rsa.pub をサーバ側(あやつられる側)にコピーして。

サーバ側(192.168.1.11)にコピーされたことが確認できたらサーバ側で

cat id_rsa.pub.192.168.1.10 >> authorized_keys

とかやる。
authorized_keys ファイルが存在するかどうかは気にしない。追記だから。
むしろすでにあるならcpとかで下手に上書きしないように気をつける。

で、
authorized_keys が作成された場合はパーミッションが644あたりになっているので、

chmod 600 authorized_keys

でrootさん以外触れないようにしておく。

したらクライアント側(192.168.1.10)から

ssh -i /root/.ssh/id_rsa root@192.168.1.11

みたいにしてサーバ側にログインできるか確認する。
『-i』が秘密鍵を使用するよオプション。-iの後ろでファイル名を指定する。
ログインできたら後はscpなりなんなり。

クライアントはWindowsだ!
というわがままさんの場合はサーバ側で鍵生成、
出来たid_rsa.pubをそのままauthorized_keysにコピー、
id_rsaをWindowsのクライアントに持っていってログインする方法でも構わないです。
要はid_rsaとid_rsa.pubが対になっているということだけ。

イメージとしては

  1. 自分(クライアント)が鉄人(サーバ)のコントローラ(id_rsa)とその受信機(id_rsa.pub)を作る。
  2. 受信機(id_rsa.pub)を鉄人(サーバ)に埋め込む。
  3. コントローラ(id_rsa)を使って「うごけてつじーん!」

ってカンジ。