質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

3回答

5964閲覧

MacOSでOpenSSH8.2のインストール

kickers

総合スコア16

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

1クリップ

投稿2020/10/08 03:00

SSH認証の鍵タイプとしてecdsa-skを使いたいのですが、このタイプはOpenSSH8.2以降しかサポートされていません。
そこでMacOSにOpenSSH 8.2をインストールしようとしました。

まず、現在のバージョンを確認します。

%ssh-V

→OpenSSH_8.1p1, LibreSSL 2.7.3

次にOpenSSHの最新バージョンをインストールします。

brew install openssh brew upgrade openssh

しかし、この後SSHのバージョンを確認しても"OpenSSH_8.1p1, LibreSSL 2.7.3"と出力されます。

ssh -V

再び下記コマンドを実行しても"Warning: openssh 8.4p1 already installed"と返されます。

brew upgrade openssh

どうすればOpenSSH 8.2 が使えるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

コマンドを実行する時、コマンドの指定にディレクトリが含まれていない場合は環境変数PATHに設定された各ディレクトリで順番に該当のコマンドが有るかを探し、最初に見つかったコマンドが実行されます。
しかし、コマンド実行の度に毎回PATHを検索するのは効率が悪いので、一度実行したコマンドはどこに有るかをシェルが覚えていて、二回目以降はPATHを検索せずに覚えていた場所のコマンドを直接起動します。
この仕組みを command hash table と呼びます。

今回の場合は、最新版のOpenSSHをインストールする前にssh -Vした時に/usr/bin/sshにsshが有る事をシェルが覚えた為、後から最新版のOpenSSHをインストールした後もそれが使われずに/usr/bin/sshの方が実行されたのだと思われます。

このような場合にはhash -rを実行すると command hash table の内容がクリアされ、次回のコマンド実行時にPATHが再検索されて新しい方のコマンドが実行されます。他にはPATHを変更する事によっても command hash table のクリアが可能です。
また、command hash table は起動しているシェル毎に独立して持っているので、ターミナルを開きなおしたり、sshでログインしている時はログインし直したりしてシェルを再起動すればクリアされます。

投稿2020/10/26 11:05

doda

総合スコア947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

/usr/local/bin/sshを実行しましょう。


なぜか/usr/bin/sshが優先されるようになってしまっているのだと推測します。

which ssh
where ssh
echo $PATH
などを調べるとよいかと思います。

投稿2020/10/08 04:49

編集2020/10/08 04:50
quickquip

総合スコア11235

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kickers

2020/10/08 07:47

quickquip様 ご回答ありがとうございます。 仰る通り、sshコマンドは /usr/bin/ssh を指していました。 しかし、echo $PATHでは /usr/local/bin:/usr/bin: ‥‥ と帰ってくるのでなぜsshで/usr/bin/sshが優先して実行されるのかわかりません。優先順位を変更する方法などはあるのでしょうか。
quickquip

2020/10/08 07:53 編集

where ssh で探索順や、"aliasかどうか?" などを表示するはずですがどうなりますか?
kickers

2020/10/08 08:14

quickquip様 where ssh では /usr/local/bin/ssh /usr/bin/ssh の順で出力されます。 また、ssh は外部コマンド( /usr/bin/ssh) であると表示されます。
quickquip

2020/10/08 09:30

それはなかなか不思議ですね。 > ssh は外部コマンド( /usr/bin/ssh) であると これはどういうことですか? "外部コマンド( /usr/bin/ssh)"と表示されているのですか? (表示されているのがどの範囲か分かりません)
doda

2020/10/08 09:48

ssh が command hash table に載っているように思います。 hash -r を実行した後に ssh -V するとどうでしょうか?
kickers

2020/10/14 03:20

quickquip様 ご返信が遅くなり大変申し訳ありません。 >これはどういうことですか? "外部コマンド( /usr/bin/ssh)"と表示されているのですか? いえ、typeコマンドを使って別個で調べました。
kickers

2020/10/14 03:27

doda様 新しいバージョンが表示されました!ありがとうございました。 この場合、次にsshを実行したら8.2で実行され、それがその後ハッシュテーブルにのることになり以降は問題ないという認識でよろしいでしょうか?
doda

2020/10/26 11:06

command hash tableの説明を回答に書きましたので、良かったら参考にしてください。
guest

0

OpenSSH
本家サイトよりソースをダウンロードして、makeして下さい。

すみません。訂正します。

homebrewでインストールしたら8.4がインストールされました。

$ brew install openssh $ /usr/local/bin/ssh -V OpenSSH_8.4p1, OpenSSL 1.1.1g 21 Apr 2020

投稿2020/10/08 03:47

編集2020/10/08 10:40
technocore

総合スコア7337

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kickers

2020/10/14 03:29

technocore様 他の方の御回答で解決することができました。御回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問