ssh


sshについていろいろやったのでメモ

逆トンネリング

できるらしい。だけど一筋縄では行かなかった.
http://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=SSH%A4%CB%A4%E8%A4%EB%A5%DD%A1%BC%A5%C8%A5%D5%A5%A9%A5%EF%A1%BC%A5%C7%A5%A3%A5%F3%A5%B0
http://kamae-norihiro.blogspot.jp/2010/11/ssh.html
結局、server側で、
# setsebool -P sshd_forward_ports 1
と、すればよい。
ローカルからリモート方向へのトンネリングであれば、
[userB@hostB]$ ssh -L 1234:hostA:22 userA@hostA
[userB@hostB]$ ssh -p 1234 userA@localhost
でいける。逆方向であれば、
[userB@hostB]$ ssh -R 1234:localhost:22 userA@hostA
[userA@hostA]$ ssh -p 1234 userB@localhost
ちなみに、
[userA@hostA]$ netstat -na|grep 1234
とかすれば、そのポートが使われているかわかる。
すでに使われているポートはだめ。また、0-1023はsu権限が必要だった気がする。
wikiによると、
多くのLinuxでは、 /proc/sys/net/ipv4/ip_local_port_range でこのポート番号の範囲が32768から61000までと設定されている。
らしいので、その範囲を使うのがよいかも。ちなみに1234はvlcが使うんだって。


ちなみに、ヴァンデグラフで作業するために中村研からアクセスしたかったが、ヴァンデグラフのルータのuser及びpasswdが不明で設定できず
(初期化したとしても上流の設定がわからない)、sshの逆トンネリングをしたかったが、どうもnexは逆トンネリングを受け付けない...
ということで、理研は逆トンネリングできるので、理研を経由してヴァンデに入ればよいと思われる。
ただし、これは理研のアカウントをもってないとできない。
nexで逆トンネリング許可したいけど何に蹴られているかわからない...

scpでフリーズする話

scpがフリーズして困った方。 これの原因は、.bashrcに標準出力するコマンドを書いたから。 scpするときに.bashrcを読んでいて、標準出力とかに出力すると scpが困ってしまうらしい。 これを回避するには、
if [ "${SSH_CONNECTION}" = "" ]; then
    echo "Geant4 env setting done"
else
    :
fi
とか書けば回避できる。
もっと根本的な解決が分かる人のツッコミは禁止。

sshの設定ファイル

~/.ssh/config(ユーザークライアント設定:openssh)
~/.ssh2/config(ユーザークライアント設定:ssh2)
/etc/ssh/sshd_config(サーバー設定?)
/etc/ssh/ssh_config(クライアント設定?)
/etc/init.d/sshd restart(再起動)
上に書かれたものが優先されるらしい。

多段ssh(家のPCに学校のPCを直接マウントとか)

参考ページ
参考ページ
Host server1
     ProxyCommand ssh -l user server2 nc %h %p
nc(netcat)というプログラムが仲介してくれる。
ので、直接アクセスしてるわけではない。
踏み台となるserverにnetcatが入っていないといけない。
nexには入っていなかったので、コンパイルして、適当に置いておいて、
それを直接指定した(ncの代わりに、/home/user/bin/netcatとか)。
(動作確認したnetcatが俺のフォルダにあるのでそれ使えばnexはok)
これで、
ssh server2
とかすれば一気にserver2にアクセスできる。
sshfsもできちゃう。
公開鍵は、クライアントの鍵をserver1とserver2に置いておく。
server1とserver2の間で公開鍵の設定をする必要はない。
カスケードさせればいっぱい橋渡しすることができる。
  
更なる情報は、ssh ncとかでググるといっぱいでてくる。

sshの接続の高速化

注意)一個目のログインでXフォワーディングしとかないと、 それ以降のログインで-XつけてもX飛ばせない。
逆にXは一つめのsshがもっているので、 他のterminalで開いたXは、そのターミナルを閉じても開いたままにできる。

参考ページ
設定は簡単で、クライアント側の.sshディレクトリに設定ファイルと一時ディレクトリを用意するだけ。
$ cd ~/.ssh
$ mkdir connections
$ chmod 700 connections/
$ vim config
~/.ssh/configの内容は下記のとおり。
Host *
ControlMaster auto
ControlPath ~/.ssh/connections/%r_%h_%p
一個sshの接続しておくと同じところへのscpとかsshではパスワードを聞かれないし接続早くていい感じ。
確立した接続を利用しているみたいで、接続の確立とか、鍵の認証とかしないから早いっぽい。

公開鍵とか(opensshとssh2間の場合)

参考ページ
参考ページ

authorized_keyのpermission

公開鍵の設定をただしくやっていて、鍵も認識しているのにどうしてか認証が通らなかった。
結局、authorized_keyのpermissionが600じゃないとだめらしい(644とかでも大丈夫)。
せめてメッセージ出してくれよ....
....http://www.hawkeye.ac/micky/network/read-log.html
「RH系でデフォルトなら、/var/log/messages と /var/log/secure の2つだけは最低でも目を通すようにしてください。」
logを見ると普通にpermissionがだめって書いてあるじゃん。うえぇぇぇぇぇぇ。

opensshで複数鍵

参考ページ
lan内でpasswdを回避するためにlan内専用の鍵を作る。
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.lan
$ scp ~/.sshid_rsa.lan.pub server:
$ ssh server
$ cat ~/.ssh/id_rsa.lan.pub >> ~/.ssh/authorized_keys 
鍵の使い分けは、
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa.lan
な感じで。


openssh->ssh2

ssh2クライアント
ssh-keygen2 -t rsa
emacs ~/.ssh2/identification
>IdKey id_rsa_1024_a
scp ~/.ssh2/id_rsa_1024_a.pub opensshサーバー:/home/user/.ssh/
opensshサーバー
ssh-keygen -X -f id_rsa_1024_a.pub >> ~/.ssh/authorized_keys
or
ssh-keygen -i -f id_rsa_1024_a.pub >> ~/.ssh/authorized_keys
クライアントで作った公開鍵と秘密鍵は両方を持っておく。
サーバーで公開鍵を登録したらopensshではpubを捨てていい。

ssh2->openssh

opensshクライアント
ssh-keygen -t rsa
ssh-keygen -x -f ~/.ssh/id_rsa > open_client.pub 
scp open_client.pub ssh2サーバー:/home/user/.ssh2/
ssh2サーバー
emacs ~/.ssh2/authorization
>Key open_client.pub

鍵の指定

ssh -i ~/.ssh/newkey_rsa hoge@192.168.1.201

通信が切断される

http://www.ymanet.sakura.ne.jp/software/index.html
sshの設定
NAT環境を使用してssh接続をしている場合、 一定時間通信がないとNATテーブルがクリ
アされ、SSH接続が切断されてしまう場合がある。
これに対処するには、一定間隔でサーバーにパケットを投げるオプションを指定する。
以下の記述を/etc/ssh/ssh_config若しくは~/.ssh/ssh_configに書けば良い。

Nを整数として、
ServerAliveInterval N(openSUSE, Vine Linux)
ProtocolKeepAlives N(ubuntu)