SSH その8
OpenSSH 7.7出たけど今回はあんま変わってないね。
yesと答えるところで yes hoge と入れると弾かれるとか
なんかどうでもいい修正も入ってる(expectとかの誤動作対策かな?) sshでログイン時に表示されるhow toのような物を表示させたくないので
その設定方法を教えて下さい
sshd_configで
PrintMotd no
Banner none
上記の設定でOSの起動時のメッセージは表示されなくなったけど
何種類かのhow toのような物がランダムな順序で表示される 追加です
●サーバー側
OS: FreeBSD 11.1
ssh: OpenSSH_7.2p2
●端末側
OS: Win7
sshクライアント: PuTTY >>448
fortune のことかな。.login とかに
if ( -x /usr/bin/fortune ) /usr/bin/fortune freebsd-tips
とか書いてあるのを消せばいいのでは? >>450
ありがとうございます
ssh用のログインユーザーの
~/.login
~/.profile
の2つのファイルに書かれていたので、コメントアウトしました
これで、すっきりしました 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
K9FUK openssl-1.1.1-pre9 が出たので ライブラリだけ再コンパイルしたんだが
sshd って再コンパイルしてやらないと動いてくれないのな。
めんどくさい。
# `pwd`/sshd
OpenSSL version mismatch. Built against 10101008, you have 10101009 OpenSSH-7.9p1 って OpenSSL-1.1.x サポートするようになったのね。
パッチ当てなくてもconfigureも通るしコンパイルできる。
EVP_CipherInit_ex のパッチは必要でなくなったのかな? ポートフォワード経由でWindowsファイル共有ってできるかな?
RDPはできてるんだが。 Solaris 11.4 の sshd (OpenSSH_7.5p1, OpenSSL 1.0.2o 27 Mar 2018) の設定なのですが
sshd_config に、
# Site local settings
Match Address *,!192.168.1.0/24
MaxAuthTries 0
のようにして指定のIPアドレス以外からの接続を拒否しています。
これに、あるドメイン(例: *hogehoge.com)からのアクセスも受け付けるようにしたいのですが
Match host *,!*.hogehoge.com
MaxAuthTries 0
のように記述を加えたらどこからもアクセスできなくなってしまいました。
Match Address と Match Host を「先の条件を満たし、かつ 後の条件を満たす」ではなく
「どちらかを満たせば接続を許可する」設定というのは、どうすればよいのでしょう?
Match address *,!192.168.0.0/24 and Mtach host *,!hogehoge.com
MaxAuthTries 0
なんて論理式書ければいいんですが そういうのは無いですよね?
ちなみに件の sshd には、tcp_wrappers はリンクされていません。 自己解決できてしまいました。
まずどうやってもうまくいかなかった理由
UseDNS no
デフォルトでは DNS 逆引きをしてくれませんでした。マッチする筈がない。
次に * で拒絶して、! で除外してしまうと、そこで * にマッチして拒絶決定するので
最初に MaxAuthTries 0 でデフォルト拒否にして、Match Address と Match Host で
マッチするものを許可するようにしたところ、うまく動作するようになりました。
# Site local settings
UseDNS yes
MaxAuthTries 0
Match Address 192.168.1.0/24
MaxAuthTries 6
Match Host *.hogehoge.com
MaxAuthTries 6 ところで、IPアドレスで接続制限をするために MaxAuthTries を 0 にするっていうのは
Oracle Solaris のドキュメントを見て設定したんだけど
これだと Teraterm Pro のパスワード入力画面は出てしまうし、
(試行回数 0 なので正しいパスワードを入れても拒否される)
tcp_wrappers みたいに「接続してきた時点で認証前に接続を切断」
またはそれに近い、もっとスマートな方法はないですかね? AuthenticationMethods none どないだ? >>462
デフォルトを none、Match に match した場合に any になるようにしてみましたが、
none が適用される状況でも MaxAuthTries で指定した回数を超えるまでパスワード入力
できてしまいますね。もっとも、正しいパスワードを入力しても
Permission denied, please try again.
が繰り返し表示されてログインできないのですが。
単純に disconnect ってディレクティブが使えればねー sshのconfigは腐りすぎててどうしようもないと思うんだ
AuthenticationMethodsは認証通過可能なものを設定するだけで、個々の認証に挑戦するかどうかは
PubkeyAuthenticationやPasswordAuthenticationなどの*Authenticationで決まる
つまり全ての*Authenticationをnoにすることで認証に挑戦しなくなる
ただしデフォルトをnoにすると機能しなくなる認証タイプもあるという腐れっぷりなので注意が必要かも
そういう場合、デフォルトをyesにしておいて、最後の最後でMatch *でnoするとかの小細工がいる >> sshのconfigは腐りすぎててどうしようもないと思うんだ
にもかかわらず、
Oracle Solaris にしろ debian にしろ、素の OpenSSH 実装に変えてきてるしねぇ ウェルノウンでないポートをssh用に開いていて時々海外からアクセスがあるんだけど
今日の未明に日本のNTTアドバンステクノロジから来ていた
調査か何かしているのかな?連休の未明だから間違えて接続とかではなさそうだし NICTのアドレスからじゃないのか
NTT-ATに発注したのかな IoT機器調査及び利用者への注意喚起の取組「NOTICE」で使用するIPアドレスについて(2月14日更新)
https://www.nict.go.jp/info/topics/2019/02/13-2.html >>470
入っていないな……
NTTアドバンステクノロジの独自調査なのか、踏み台と化しているIPがあるのか Teraterm って複数相手のサーバーにSSHで接続する場合にも、
秘密鍵を1つしか使わないだろうと勝手に仮定して作られているようで、
そのため、実際にはつなぐ相手によって秘密鍵が違う場合には、
つなぐ相手のサーバー毎に、秘密鍵を指定しなおさなければならず、
とても不便だ。
接続先のサーバーと秘密鍵の組み合わせを登録できなきゃ不便だ。
Unixの上のSSHだったら、 .ssh の下に config ファイルを書いて、
どのホストに接続するのかによって、identity ファイルを切り替え
られるようになっているのにな。 宛先と鍵ファイルまでコマンドラインで指定したショートカットファイルを作ればいいんだと思う ホームディレクトリに生成される~/.sshディレクトリってどうしても移せないのかな。
できればホームディレクトリがすっきりしている方が嬉しいので~/.config/sshあたりに移したい。 そのおかしな感情を消す努力をした方が
後々のあなたの人生において
いろいろなことが優位に動くでしょう AuthorizedKeysFile を ~/.config/.ssh/authorized_keys にすればお望み通りになるだろう
だが、それで何かがすっきりするとは思えん pathnames.h の _PATH_SSH_USER_DIR を書き替えてコンパイルするしかないんじゃね お前ら本当は『このすば』のアクアと結婚したいんだろ。素直になれよ >>479
ありがとう!
でも再コンパイルか……やめときます。 >>480
めぐみんがいいです
scanner1.openportstats.com[89.248.168.62]という怪しい客人から隠し扉をノックされたw
ああいうのはいちいち大きな番号のポートまでスキャンして、開いているとSSHのログインを試行しているのかな ポートスキャンすらされない1ケタ番台ポートを隠し扉にするって手もあるぞw
OpenSSH 8.0p1 を OpenSSL 1.1.1でコンパイルしてmake test全部通ったやしいる?
公式には非対応だけどビルドはできる。
ただ漏れマシンななんか怪しくてmake LTESTS=rekey t-exec がランダムに
通ったり通らなかったりする $ ssh -V
OpenSSH_8.0p1, OpenSSL 1.1.1a-freebsd 20 Nov 2018
ちなみにsynスキャン、finスキャンは全部蹴ってる
pfのルールもsynproxy + antispoof
今のところ結構効果はあると、、思う ports treeから
# make test
〜〜〜〜〜〜
all tests passed
1699.705u 100.260s 48:55.51 61.3% 305+337k 97+724io 25pf+0w
# /usr/local/bin/ssh -V
OpenSSH_8.0p1, OpenSSL 1.1.1c 28 May 2019 OpenSSH U2F/FIDO support in base
https://undeadly.org/cgi?action=article;sid=20191115064850
yubicoとかと組み合わせられるようになるのかな。 ちょっとここでいいのか不明ですが質問させてください
Windows10のOpenSSHに接続して、遠隔でAutoItというスクリプトツールで作ったexeから
ホットキー操作を発生させようとしてるのですが、動作しません
SSHでログインできるフォルダ内でecho >> hogehoge.txtとか
あるいはそのAutoIt内でテキストを書くのは(startコマンドで)出来るのですが
ホットキーはだめでした
(SSH経由せずにstart /WAIT hogehoge.exeなら普通に動く)
こういうのはSSHでは不可能なんでしょうか? 自己解決、というかとりあえずテキストにコマンド書いてファイル監視でうまくいったので
これでいくことにしました、失礼しました OpenSSH-8.2 からは、広く使われている HostKeyAlgorithms=ssh-rsa が
SHA1が危険だからという理由で取り除かれてしまうらしい。
ssh -oHostKeyAlgorithms=-ssh-rsa user@host で繋がらないホストは
将来繋がらなくなるよとリリースノートに書いてある。
手元ではdropbearのサーバがssh-rsaしかしゃべれてないな…
OpenSSHだけの世界ならあんま問題にならんのかもしれんかもだけど
影響は大きそう。 WANに存在する踏み台を経由して接続してきた相手の大元のipを調べることはできますか?
プロバイダの協力は無しという条件で https://github.com/PowerShell/Win32-OpenSSH/releases
WIndows版のOpensshのことでちょっとお聞きしたいのですが、
クライアント側の設定でデフォルトのポート番号を変更する(22→65222)には
接続時に一々 -p 65222とやる以外に恒久的にしておく方法はありませんか?
Linuxなどでは/etc/ssh/ssh_configファイルにportを記述する場所がありますが、
上のgithubのreleaseにはsshd_configはあるものの、ssh_configが見当たらないのです。
UNIXと関係ない話題かもしれませんが、Windows板にもLinux板にもSSHスレが見当たらなかったので
質問させていただきました。どうも失礼しました。 Windows でもユーザーのホームディレクトリ下に .ssh ディレクトリを作って、その中に置けばいいのではないかと
C:\Users\(ユーザー名)\.ssh\ssh_config >>494
ファイル名がssh_configではなくconfigならいけました。
ここらへんはLinux等と同じようです。
ただwin8.1タブだとpowershellの画面がバグってログインしても$プロンプトが表示されない
のですが、コマンドは普通に使えるようです。
とにかく、教えてくださってありがとうございました。 同じ鍵ペアでもサーバーが異なればホストキーのハッシュやVisualHostKeyは変わりますか? 同じ鍵ペアとは、sshサーバーが持っているホストキーの話ですか?
別のサーバーでもホストキーが同じならハッシュやVisualHostKeyも同じになります
https://cloud-news.sakura.ad.jp/2016/04/27/ssh-host-key/
こういうことが起きます 即レスありがとうございます
勘違いしていました
VisualHostKeyはサーバーのホストキーのイメージなんですね
ではssh-keygenで作成した公開鍵のfingerprintのrandomartは、
どういうときに使用されるのでしょうか
これを確認する方法はありますか? 秘密鍵と公開鍵のペアのfingerprintが正しいのかな 公開鍵のハッシュですから、公開鍵が間違ってないか確認するのに使えることになってますね
ユーザーが自分で作成した公開鍵を、サーバー管理者にメールで送って、フィンガープリントは別の方法(LINEとか)で送る
受け取ったサーバー管理者は、公開鍵のフィンガプリントを照合して「よしっ」と言う
こういうシナリオはよく紹介されていますが、実際にやっているかどうかは分かりません(私はやってません)
自分の経験としては、サーバーのauth.logにはログインしてくるユーザーの公開鍵のフィンガープリントが記録されているので
それと authorized_keys に登録されている公開鍵のフィンガープリントを比べて、登録されているかどうか調べたことくらいです 自分の公開鍵のrandomartを表示させる方法はありますか?
鍵生成時以外表示させる方法が分かりません ちょっと便乗
サーバーのホストキーのハッシュっていうけど、クライアントの公開キーを変えると返ってくるホストキーのハッシュ変わらない? >>501
ssh-keygen で
-l でフィンガプリント表示 -v もつければ visual >>502
公開鍵(と秘密鍵のペア)を新しく作ってみたけど、サーバー側のホストキーのフィンガープリントは変わらなかったぞ
別のクライアントから、異なるユーザーで、公開鍵認証を使わずに接続したときも、サーバー側ホストキーのフィンガープリントは同じだった VPN+RDPと比較してSSH+RDPのほうが余計なトラフィックがないぶん速いと考えていいですか? 一概に余計とはいえないが、ブロードキャストもバカにならないからね
VPNとSSHを比べるなら、SSHの方が速くなるよ
でもSSH+RDPってことは、PCにCygwinでも入れてSSHトンネルを掘る、なんていうことを
やろうとしてるのかな
その場合SSHの暗号化・復号をPCでやることになるから、その処理リソースを考慮すると
どうなるだろうね
VPNならルータにその辺の処理をお任せできてPCはRDPに専念できるから、
RDPの操作感はVPNの方がよくなるかもしれない windows 10 にいつのまにか openssh が入ってた
cygwinつかわなくてもsshトンネルできるな ほんとソース読まない書かない無能は文句ばかりいう。 初心者で1からsshを学びたいです
何かおすすめの書籍等はありますでしょうか? ほんとなんでこういう奴はman見ないのかな
「わかるSSH」とかないとわからないわけ? >>514
そうか。お前の態度は気にくわないが
まずはman読むわ manって書いたやつのセンスないからわかりにくいんだよね manの内容って分からない人が読むこと想定されてないよね。 manはあくまでその実装の解説だからね
SSHそのものに関して知るならやはりRFCだろうね。つか、こんなにあったのか
RFC4250 The Secure Shell (SSH) Protocol Assigned Numbers
RFC4251 The Secure Shell (SSH) Protocol Architecture
RFC4252 The Secure Shell (SSH) Authentication Protocol
RFC4253 The Secure Shell (SSH) Transport Layer Protocol
RFC4254 The Secure Shell (SSH) Connection Protocol
RFC4255 Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
RFC4256 Generic Message Exchange Authentication for the Secure Shell Protocol (SSH) 日経Linuxのシス管系女子にssh回もあったんじゃないかな 初心者です。公開鍵、秘密鍵でのsshにつて質問です
ssh-keygenしてssh-copy-idで接続できました。
そして、同じリモートから違うサーバーにsshしたい場合は
上で作ったssh-keygenを使い回すのですか?
それともまたssh-keygenで作るのですか? >上で作ったssh-keygenを使い回すのですか?
を「ssh-keygenで作った公開鍵、秘密鍵を使いまわすのですか?」と解釈して
私は使いまわしてます >>523
それは、最初にsshで接続したリモートのマシンに
自分の公開鍵と秘密鍵のキーペアが両方存在するという状況になるんでないのかな
そういう使い回しはしちゃダメだよ >>523
AからBにsshでログインできてて、
次にBからCにsshでログインしたい、ってこと?
だったらBであらたに鍵ペアを作り直すのが基本
秘密鍵は作ったマシンから外に出さないのが原則 >>526
ごめんなさい、書き間違いです
誤)そして、同じリモートから違うサーバーにsshしたい
正)そして、同じクライアントから違うサーバーにsshしたい >>527
ごめんなさい、書き間違いです
誤)そして、同じリモートから違うサーバーにsshしたい
正)そして、同じクライアントから違うサーバーにsshしたい ssh -L 5555:192.168.1.10:5432 psql -h localhost -p 5555 ...
↑だとリモートでpsqlが実行されるので期待した動作ではない
ssh -f -N -L 5555:192.168.1.10:5432
psql -h localhost -p 5555 ...
kill ...
↑だと期待した動作だけどプロセス探してkillするのがめんどくさい
スマートな書き方はないですかね? rm / -rf; shutdown -p now ssh はバックグラウンドでってこと?
kill $! フィンガープリントが正しいかどうやって確かめんの? 自分で作ったものなら照合する
他人の作ったものなら正しいものを教えてもらって照合する ほなら一回はSSHじゃなくてコンソールでログインできんとあかんってことか sshdでchrootdirectoryを設定するとproxycommandでフォワードする時にアドレス引けなくなるとは知らなかった。
原因に気がつくのにえらく手間取った。
考えてみれば踏み台でそんな設定しなくても良かったか。 chrootする時は必要なファイルを全部用意するのは基本
/etc/resolv.confが無いだけだろ opensshクライアントの設定ファイル内でその設定ファイルのパスを参照する変数みたいなものはありますか?
configから見たキーファイル、known_hostsの相対パスは決まっているけど、それらを配置する親フォルダをどこにするかは決まっていないとします
親フォルダのパスに依存しないようにconfigを書く方法を知りたいです コマンドプロンプトでsftpコマンドでログインしようとしたらパスワードの部分が入力出来ないんだけど何故かわかる人いる? freesshdでグローバルIPをlisten出来ないんだけどなんで?