トップページunix
1001コメント324KB

SSH その3

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。NGNG
SSHに関する情報交換のスレッドです。

FAQ、リンク集は >>2-5 あたり。

前スレ: http://pc.2ch.net/test/read.cgi/unix/1028157825/
前々スレ: http://pc.2ch.net/unix/kako/976/976497035.html
0329名無しさん@お腹いっぱい。NGNG
>>328
だから、まず接続時に ssh の公開鍵認証を行うわけ。
その後クライアント側はランダムに共通鍵を作ってサーバに
それを送信するわけ。もちろんその共通鍵の受渡しには公開
鍵暗号を使うんだけどね。

んでその共通鍵で暗号化して通信してるのさ。

なんでずっと公開鍵暗号を使わないのか?っつー疑問がある
かも知れんが、それは共通鍵暗号/復号の方が軽いのさ。

では
0330名無しさん@お腹いっぱい。NGNG
いま、大学とバイト先の会社とで、まったく同じ問題を味わっています。

まず自宅からsshで大学なり会社なりのサーバにアクセスして、
そのサーバから内部でsshで目的のコンピュータにアクセスする経路をたどる必要があります。

これ自体はよいのですが、ローカルから目的のコンピュータにデータを送ろうとした場合、
やたら面倒になってしまうので困っています。
今はscpを2回行っているのですが、頻繁にファイルのやり取りをするので、
よくミスをしてしまい、能率的にも精神的にも効率が非常に悪いです。

よくある環境だと思うのですが、何か方法があるのでしょうか?
ググる際の簡単なキーワードだけでも結構ですので、ぜひ教えてください。
0331名無しさん@お腹いっぱい。NGNG
自宅にsshdを立てて、目的のコンピュータからscpする
0332名無しさん@お腹いっぱい。NGNG
多段
0333名無しさん@お腹いっぱい。NGNG
>>331
大学、会社とも、内から外にsshポートをあけていません
>>332
とりあえずぐぐってみます
0334名無しさん@お腹いっぱい。NGNG
stone (with SSH port forwarding) 使うとわりとすっきりいくかも
0335名無しさん@お腹いっぱい。NGNG
>>332
ちょっと見てみましたが、結局gatewayとなるサーバが
ポートを公開してくれないことには使えないみたいですね。

>>334
大学や会社の内部コンピュータにも、sshを使わないと入れないのですよ…
0336名無しさん@XEmacsNGNG
>>329
> その後クライアント側はランダムに共通鍵を作ってサーバに
> それを送信するわけ。もちろんその共通鍵の受渡しには公開
> 鍵暗号を使うんだけどね。

それは protocol v1.X での動作だから、v2 でしか動かせない
sftp-server に関する説明としては不適切かな。
0337名無しさん@お腹いっぱい。NGNG
>>335
ムリヤリ SSH だけで解決しようとしないで
管理者に相談すれ。
0338名無しさん@お腹いっぱい。NGNG
>>337
大学も会社も、なかなかに私の立場が低くて頼みづらいんですよね。
とりあえず、会社の方はsshを通してもらえるかもしれないので、
自宅のsshdと通信する方法でミスを減らそうと思います。
0339名無しさん@XEmacsNGNG
>>335
> >>332
> ちょっと見てみましたが、結局gatewayとなるサーバが
> ポートを公開してくれないことには使えないみたいですね。

って何を見てそういう結論に達したのか分からんけど、>>330 によ
れば

自宅PC → 相手GW
相手GW → 目的SV

それぞれの SSH 接続はできてるんだよな?

であれば、(たぶん) 前スレで既出だが、自宅PC → 相手GW の SSH
接続する際に目的SV の port 22 を自宅 PC の適当な port に
local forward してやりゃいいだけ。

>>338
> 大学も会社も、なかなかに私の立場が低くて頼みづらいんですよね。

相手NW のポリシー侵害することになる可能性もあるから、いずれに
しても勝手にはやらず、相手NW 管理者にきちんと確認はしとくべし。
0340名無しさん@お腹いっぱい。NGNG
公開鍵(e,n)を手に入れる。
nを因数分解して、素数p,qを手に入れる。
{g,{d,k}} = ExtendedGCD[e,(p-1)(q-1)]となるようなdを見つける。
g=k=1である。d<0 なら d+(p-1)(q-1)とする(不定性のため)。
秘密鍵(d,n)を手に入れることができた。
アスキーコードになっている文字列Sに対し、
Mod[S^d,n]とし、暗号を解除、あとはそのアスキーコードを
FromCharacterCode["S"]で英字に直し、目的の文章を手に入れる。
0341名無しさん@お腹いっぱい。NGNG
素数判定は「決定的」多項式時間で可能
ttp://science2.2ch.net/test/read.cgi/math/1028813059/
0342名無しさん@お腹いっぱい。NGNG
一応並みの数学屋として、「そーいうレベルでのアレ」だとは
ゆっとく。業績としてはたしかなものだけんどね
0343名無しさん@お腹いっぱい。NGNG
>>336
v2はどーゆー動きなの?
0344名無しさん@お腹いっぱい。NGNG
>>310 ログインシェルはcsh系?
だとしたらまずWinSCPの設定でシェルを /bin/sh に変更。bashでもいいけど。
Clear national variables(日本語版だとどう訳されてるんだろ)という項目がある
はずだからそれにチェックを入れる。それで英語の出力が出るはず。
0345名無しさん@XEmacsNGNG
>>343
> v2はどーゆー動きなの?

v2 では共通鍵交換方式も server/client 間で交渉可能となってる
けど、現状使われている事実上唯一のアルゴリズムは D&H であり、
server 認証は S/C 双方の一時 D&H parameter その他のデータに対
して server が施したデジタル署名を client が検証することで実
現されてる。
0346名無しさん@お腹いっぱい。NGNG
何言ってるかわからないんですが、、、
0347名無しさん@お腹いっぱい。NGNG
>>346
とりあえずInternet Draftを嫁。
http://www.ietf.org/html.charters/secsh-charter.html

"SSH Protocol Architecture"と"SSH Transport Layer Protocol"を読めば、
とりあえずサーバ<=>クライアント間の暗号化通信路を確立するところまでは
わかるはず。
0348名無しさん@お腹いっぱい。NGNG
PuTTY 0.54 age
0349名無しさん@お腹いっぱい。NGNG
PuTTYごときでageるなよ
0350名無しさん@お腹いっぱい。NGNG
ご存知の方がいらしたら、教えてください。
Port Forward する際に、クライアント側の .ssh/config で
「LocalForward 80 hogehost:80」 みたいに書けるわけですが、
"hogehost" をlocalhost に限定するような制約って
サーバ側(sshd_config 等)で可能なんでしょうか。
0351名無しさん@お腹いっぱい。NGNG
>>350
別のプロセスで Proxy したら同じことだからそんな機能意味ないでしょ。
0352名無しさん@お腹いっぱい。NGNG
>>351
えーと、ユーザのログインシェルは /bin/false 等に設定して殺してあります。
要するに、勝手に外部(sshd 起動ホスト以外)の SMTP とかに port forward
されたくないんです。
やっぱり、iptable とかでフィルタリングするしかないんでしょうか。。。
0353名無しさん@お腹いっぱい。NGNG
ログインは許可しないのにローカルにだけフォワードする
のはいいの??
それって結局フォワード先も特定のポートしか無いんだ
ろうから SSL 使えば良いんじゃないでしょうか。
0354350NGNG
>>353
そうです。
ログインは許可せずに、特定のアプリケーションだけ SSH による鍵認証により
接続して使わせたいのです。
0355名無しさん@お腹いっぱい。NGNG
>>350
permitopen="host:port"
0356350NGNG
>>355
ありがとうございます。おかげでやりたかったことが実現できました。

sshd_config ではなく authorized_keys で、それぞれの公開鍵ごとに制御可能なのですね。
というわけで、$HOME/.ssh/authorized_keys でユーザごとに管理させるのを止めて
管理者側で一元管理するようにしました。
0357sageNGNG
OpenSSHのssdで、暗号化する前の通信データ(送信)と、複合化後の受信データ、つまり暗号化されていないそれぞれの情報の内容が見たいのですが、どこで取得できるかわかりません〜。
printfかファイル出力で取得しようかと思いますが、どこに仕掛けたらよいか・・・
誰かお助け(教えて)ください〜。お願いします。
0358名無しさん@お腹いっぱい。NGNG
Cygwinスレに出てるcocotの真似すればよい
0359名無しさん@XEmacsNGNG
>>357
> OpenSSHのssdで、暗号化する前の通信データ(送信)と、複合化後の受信データ、
> printfかファイル出力で取得しようかと思いますが、どこに仕掛けたらよいか・・・

実際の暗号化/復号処理を行なってるのは packet.c。

こいつを -DPACKET_DEBUG 付きで compile すると ssh/sshd が処理
前後の内容を標準エラーに吐き出すようになるので (たぶん)、その
辺参考にしててきとーにいじくってみれば?
0360357NGNG
>>358
>>359
初心者の私の質問に親切にお答えいただいてありがとうございます。
非常に参考になりました。
さっそく試してみようと思います。
0361名無しさん@お腹いっぱい。NGNG
OpenSSH 3.8 release age
0362A5501TNGNG
キタ━(°∀°)━!!
0363名無しさん@お腹いっぱい。NGNG
幾つか設定項目変わってるねぇ

diff -u openssh-3.7p1/sshd_config openssh-3.8p1/sshd_config ってみるテスト
+#KerberosGetAFSToken no

-#GSSAPICleanupCreds yes
+#GSSAPICleanupCredentials yes

-# bypass the setting of 'PasswordAuthentication'
-#UsePAM yes
+# bypass the setting of 'PasswordAuthentication' and 'PermitEmptyPasswords'
+#UsePAM no

-#KeepAlive yes
+#TCPKeepAlive yes
0364名無しさん@お腹いっぱい。NGNG
PAM がデフォルトでNOになったのね。
0365名無しさん@お腹いっぱい。NGNG
テラターム!
0366名無しさん@お腹いっぱい。NGNG
初心者なのにunixサーバ管理者に任命されて、sshdをインストールしたはいいのですが、telnetを止めろと言われました。
でもsshdが動いていれば、telnetdは殺してもいいものなのでしょうか?それとも、他の方法でアクセスできないようにするのでしょうか。
不安でなかなか実行できません。
私の理解では、sshでログインするのは暗号化されているが、telnetと同じというイメージなのですが・・・
教えてください。
0367名無しさん@お腹いっぱい。NGNG
>>366
ssh は rsh をセキュアにしたものであって telnet とは無関係。
0368名無しさん@お腹いっぱい。NGNG
telnet は即効で止めましょう。
「telnet で繋がらないやん」と言われたら、「SSHしか駄目です」と言いましょう。
それ以外には困ることはありません。

これでサーバー管理者の第一歩を歩みだせましたね。
0369名無しさん@お腹いっぱい。NGNG
> telnetと同じイメージ
イメージで処理せず、疑問に思ったことは可能な限り自分で調べてみましょう。
ssh の通信が暗号化されるかどうかは、パケットキャプチャしてみれば確認できます。
それでも気になるなら、ソースコードまでたどるという手もあります。

イメージだけで管理を始めるとトンデモ管理者への第一歩を歩んだことになります。
今ならまだ間に合います。
0370名無しさん@お腹いっぱい。NGNG
>>369 はBSD厨ですんで放置で。。。
0371名無しさん@お腹いっぱい。NGNG
>>369 は全然回答になってないしな。
0372名無しさん@お腹いっぱい。NGNG
(・∀・)ジサクジエンデシタ
0373名無しさん@お腹いっぱい。NGNG
>>369を要約してみました。







ぐぐれ。
0374名無しさん@お腹いっぱい。NGNG
>>373
0点。
0375名無しさん@お腹いっぱい。NGNG
366で書いた者です。
皆さんのお話、とても参考になりました。
どうもありがとうございます。わかると面白いので今後もさらに勉強します。
0376名無しさん@お腹いっぱい。NGNG
login shell が始めから ssh 通っているのってどうやっているのですか?
0377名無しさん@お腹いっぱい。NGNG
>>376
どういう意味?
0378名無しさん@お腹いっぱい。NGNG
>>377
例えば↓な感じの

|-sshd---sshd---bash---pstree

ttp://pc.2ch.net/test/read.cgi/linux/1015251437/2
ttp://pc.2ch.net/test/read.cgi/linux/1015251437/4
ttp://pc.2ch.net/test/read.cgi/linux/1015251437/10
0379名無しさん@お腹いっぱい。NGNG
>>378
単に ssh でログインして pstree 打っただけでは。
0380名無しさん@お腹いっぱい。NGNG
一つの接続に対して sshd のプロセスが二つ立ち上がる
理由ってなんだったっけな。

>>376 が思い描いていそうなのは
ssh host1 -t ssh host2
みたいなことか
0381名無しさん@お腹いっぱい。NGNG
>>380
つか、一つの接続には sshd ひとつしか立ち上がってないでしょ。
一個目の sshd は親玉 daemon 。
↓これ見てみ。
http://pc.2ch.net/test/read.cgi/linux/1015251437/9
0382名無しさん@お腹いっぱい。NGNG
>>380
UsePrivilegeSeparation yes でsshdが2つ動く
0383名無しさん@お腹いっぱい。NGNG
>>381
うぉ、そうだった。thx
0384名無しさん@お腹いっぱい。NGNG
うp方向のsshってある?
その逆はscpだけど。
0385名無しさん@お腹いっぱい。NGNG
まあ落ち着いてscpのmanでも読め。
0386名無しさん@お腹いっぱい。NGNG
まあ、落ち着いて cp の man でも読めや。
0387名無しさん@お腹いっぱい。NGNG
ついでにsftpのmanも読め
0388名無しさん@お腹いっぱい。NGNG
えーと、

rsh  ---> ssh
rlogin ---> ssh
telnet ---> ssh
ftp  ---> sftp
rcp  ---> scp
rcp  ---> rsync

で良いでしょうか?
0389名無しさん@お腹いっぱい。NGNG
rsync ---> rsync -e ssh
0390名無しさん@お腹いっぱい。NGNG
ふつう RSYNC_RSH=ssh; export RSYNC_RSH してるだろ。
0391名無しさん@お腹いっぱい。NGNG
ふつうって何さ
0392名無しさん@お腹いっぱい。NGNG
友達の少ないしとをいぢめちゃだめですよ
0393名無しさん@お腹いっぱい。NGNG
rsync 2.6.0だとsshがデフォルトになってるはずさ。
0394名無しさん@お腹いっぱい。NGNG
-e "ssh -l ユーザー"だったりするくらRSYNC_RSHは使えないなぁ
0395名無しさん@お腹いっぱい。NGNG
ふつう user@host:/path/to/dir するだろ。
0396名無しさん@お腹いっぱい。NGNG
rsync -z と rsync -e 'ssh -C' はどっちが効率いいんざましょ。
0397名無しさん@お腹いっぱい。NGNG
>>395
なんかそれだと/home/ユーザー/.sshの中の鍵を見つけてくれないんだよね
なんでだろ?
0398名無しさん@お腹いっぱい。NGNG
>>394
.ssh/config に User 指定しとけば host:/path/to/dir でいける
0399名無しさん@お腹いっぱい。NGNG
>>396
http://www.mail-archive.com/rsync@lists.samba.org/msg08406.html
0400名無しさん@お腹いっぱい。NGNG
>>400ゲトー
http://www63.tok2.com/home2/tokumeizatudan/2ch/2ch.swf
↑UNIX板、2ちゃんに関するフラッシュ
0401名無しさん@お腹いっぱい。NGNG
リモートにアクセスした後にそこのルートディレクトリ(/)以下全部を、ローカル(hoge.jp)のbokeユーザのホームディレクトリにコピーしたい時、
#scp -r /* boke@hoge.jp
でよろしいでしょうか?
0402名無しさん@お腹いっぱい。NGNG
>>381
あのですね
接続ごとに 2つずつたちあがるんですけど
これは何が原因ですかね

接続ごとに親玉いるんですかね
0403名無しさん@お腹いっぱい。NGNG
>>402
1個下のレスぐらい見なよ
0404おしりからミミズが出てきたYONGNG
次期Openssh(openssh-4.0.rc.tar.gz)は、パッチとして提供つつ削られたchroot機能が標準化されるらしい。
0405名無しさん@お腹いっぱい。NGNG
それよりsftpの効率をあげてほすい
0406名無しさん@お腹いっぱい。NGNG
自分自身で自身を攻撃すると
ループバック攻撃が成立し、デフレスパイラルならぬ
「アタック・スパイラル」が成立してなんだか楽しそう_| ̄|○

まさにうんこスパイラルですな
0407名無しさん@お腹いっぱい。NGNG
それより Heartbeat/Watchdog Patch を標準化してほすい
0408名無しさん@お腹いっぱい。NGNG
>>401
マルチか。
0409ssh-geekNGNG
ASPページや、ASP.NETといったサーバサイドはもちろん、VB,VB.NET, C#アプリケーションからも手軽にSSHクライアントアプリケーションが開発できます。
海外(ロシア)ですが、非常に親切に回答してもらえます。

近々日本人スタッフによるサポートも始まるようで、試してみる価値ありです。

http://www.weonlydo.com/
0410ssh-geekNGNG
ASPページや、ASP.NETといったサーバサイドはもちろん、VB,VB.NET, C#アプリケーションからも手軽にSSHクライアントアプリケーションが開発できます。
海外(ロシア)ですが、非常に親切に回答してもらえます。

近々日本人スタッフによるサポートも始まるようで、試してみる価値ありです。

http://www.weonlydo.com/
0411名無しさん@お腹いっぱい。NGNG
OpenSSL に穴が出てるけど、問題アリなのは libssl の方であって、
libcrypto には関係ないから ssh は影響なしという理解であってる?
0412名無しさん@おなかいっぱいNGNG
SFU3.5のOpenSSH371.p2使ってみたんだけど、なかなか良かとよ。
Cygwinのsshdより軽いもんね。
まぁsftpはどやっても重いけど、コリャどうしようもなか問題ね。
今日日VPN付きルータなんてのもあるようだが、オイラはOpenSSHやね。
もちろんケースバイケースなんでしょうが、WinもUNIXも混ぜ混ぜMIXなオイラにはありがたいOpenSSHでした。
さて、オナニーでもして寝るか。
0413名無しさん@お腹いっぱい。NGNG
boxA(会社) から boxB(家) は接続できる
boxB(家) から boxA(会社) は接続できない

という環境のとき,boxAから
[user@boxA]$ ssh -R 10022:localhost:22 boxB
でポートフォワーディングしておけば,
[user@boxB]$ ssh -p 10022 localhost
boxBからもboxAへ接続できるじゃん! 超便利.

そんなある日,家にいるとき,boxBをリブートしたいけど,
boxAからの接続は切りたくない.どうしようと思い,
boxAで
while true ; do
ssh -N -R 10022:localhost:22 boxB
echo "reconnect.." ; sleep 60
done
このようなスクリプトはしらせれば解決だろ.と思ったのですが.
boxBがリブートしたり,落ちたりして,sshセッションが無効になっても
ssh -N -R 10022:localhost:22 boxB
の部分は動きっぱなしで,ループしてくれません.

今は,姑息な手段で,解決しようとしていますが,なにかエレガントな解決方法ありませんか?


0414名無しさん@お腹いっぱい。NGNG
Heartbeat/Watchdog Patch for OpenSSH とか。
0415名無しさん@お腹いっぱい。NGNG
PasswordAuthenticationをnoにしているにも関わらず、
パスワード認証が通ってしまうのは何故なんでしょうか?
0416名無しさん@お腹いっぱい。NGNG
>>415
しらん。-t つけて起動してみるとか。
0417名無しさん@お腹いっぱい。NGNG
>>415
それはパスワード認証ではないから、とか言ってみるテスト。
ssh -v でみてみよう。
sshd -d で受けてみよう。
0418名無しさん@お腹いっぱい。NGNG
>>415
おそらくChallengeResponseAuthenticationがらみでしょ。
ttp://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/71239
0419名無しさん@XEmacsNGNG
>>414
> Heartbeat/Watchdog Patch for OpenSSH とか。

Protocol2 なら ClientAliveInterval だけで OK。
0420415NGNG
>>418
これでした。ありがとうございます。
0421名無しさん@お腹いっぱい。NGNG
シェルの中で、.netrcを使ってsftpを実行させようとするのだが動きません。
エラーを確認すると"machine"をsftpが認識できないようなのです。
sftpで、FTP転送スクリプトファイルである.netrcを使いたい時、どうすればいいのでしょうか。
(ちなみにftpコマンドの場合は正常に接続できました。)

◇自作のスクリプト

 echo machine XXXX.XXXX.XXXX.XXXX(接続先IP) login XXXX password XXXXXX > $HOME'/.netrc'
echo macdef init >> $HOME'/.netrc'
echo binary >> $HOME'/.netrc'

sftp -v -i XXXX.XXXX.XXXX.XXXX(接続先IP) < $HOME'/.netrc'

( ftp -v -i XXXX.XXXX.XXXX.XXXX(接続先IP) < $HOME'/.netrc' だと正常に接続する)


0422名無しさん@お腹いっぱい。NGNG
sftp が .netrc を読むとは初耳だ。
ftp とは似て非ざるものぞ。
0423名無しさん@お腹いっぱい。NGNG
>>422
×非ざる
○非なる
これでは否定の否定だ。
0424421NGNG
やっぱ.netrcはsftpじゃ読めないってこと・
0425名無しさん@お腹いっぱい。NGNG
>>423
非(あら)ざる
非(ひ)なる
0426名無しさん@お腹いっぱい。NGNG
>>421
sftpは.netrcを読まないので、自動ログインする場合は別の方法が必要になる。
パスフレーズなしの秘密鍵を使うとか。
つか、

> ftp -v -i XXXX.XXXX.XXXX.XXXX(接続先IP) < $HOME'/.netrc'

って使い方は合ってるの?
.netrcは標準入力に与えるんじゃなくて、ただ記述しておくだけ(ftpが勝手に読む)んだと
思ってたけど。
0427名無しさん@お腹いっぱい。NGNG
man ハ偉大ナリ
man シル man シル man シル
0428421NGNG
>>422-426
レスさんくすです。
sftpは.netrcを読まないんですね。

>.netrcは標準入力に与えるんじゃなくて、ただ記述しておくだけ(ftpが勝手に読む)んだと
思ってたけど。

明示的にする為にわざとそういう書き方をしています。


シェル内にsftpを組み込む時、いちいち1つずつファイルを転送するコマンドを書かずに、
1つの転送スクリプトにまとめておき、sftpに一度で読み出すようにしたいんですが
何か方法ってあるんでしょうか。




■ このスレッドは過去ログ倉庫に格納されています