2023-01-12



格安レンタルサーバーCORESERVERのv1-MINIプランを使用中、git pushやrsync -e sshなど内部でsshを呼ぶようなコマンドを打ったら、ある日突然
git push -u origin master /usr/bin/ssh: symbol lookup error: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
などと言われ、エラーで終了するようになってしまった。え?という感じで、試しにシステムのsshやsshdを単独で叩いてみたら、同じようにエラーで起動できなかった。
/usr/bin/ssh /usr/bin/ssh: symbol lookup error: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b /usr/sbin/sshd /usr/sbin/sshd: symbol lookup error: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b
リンク先のOpenSSLライブラリをうまく見れていないのだろうが、レンタルサーバなので手が出せない。
sshコマンドさえちゃんと動けばいいわけなので、以前、自力で最新gccを自分のHOMEに導入したように、
レンタルサーバーCORESERVERにgcc/g++8.3をソースからインストールして使う
sshコマンドもソースコードからコンパイルし自分のHOME/.localに入れて実行してしまえばよいのではないか。
結論から言うと、無事解決しました!以下手順です。
OpenSSHソースコード取得・展開
wget -c https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz tar xvfzp openssh-8.0p1.tar.gz
インストール先に自分のHOME/.localを指定しconfigure
cd openssh-8.0p1/ ./configure --prefix=/virtual/hogeuser/.local --without-openssl-header-check
--without-openssl-header-checkをつけないと整合性エラーが出たのでつけた。
ビルド・インストール
make make install
.local/binにsshやscp,ssh-keygen, .local/sbinにsshdが無事インストールされた!
エラーが出ないで起動可能かテストする
バージョンチェックがちゃんと出ればすべてOK
/virtual/hogeuser/.local/bin/ssh -V OpenSSH_8.0p1, OpenSSL 1.1.1s 1 Nov 2022
.local/binを最優先パスとして環境変数に通す
.bash_aliasesなどに、以下のように記述し.local/binを先頭にして最優先PATHにする
if [ -d $HOME/.local ]; then export PATH=$HOME/.local/bin:$PATH fi
一旦ログアウト後、再度ログインしてsshのパスを確認する
.bash_aliasesの設定が効いているかをチェックする。
which ssh ~/.local/bin/ssh
上記のように表示されれば、単純に「ssh」とした場合自力コンパイルしたこのsshコマンドが呼ばれ、エラーが解決!さきのgithubへのリモートcommitも無事成功。
git push -u origin master Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 128 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 1.02 KiB | 1.02 MiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:servernote/samples.git a8523d2..3d481b7 master -> master



※本記事内容の無断転載を禁じます。
オンボードグラフィックスと外付けビデオカードを同時利用してデュアルディスプレイにする
EaseUS RecExpertsで画面を録画する
【MySQL】テーブル定義を確認してインデックスを操作する【MariaDB】
通常のC言語配列にstd::for_each,find_if等のC++ラムダ式ループを適用する
【C/C++】処理系に依存しない64ビットフラグ演算集【保存版】
【C++】2つのvector配列を比較して両方に共通する要素を取り出す【set_intersection】
【Node.js】ビットコイン(BTC)およびイーサリアム(ETH)の日本円(JPY)レートを取得する
【Node.js】BTC←→SATOSHIおよびETH←→WEIの相互変換を行う
【Node.js】文字列を後から復元できる可逆の暗号化にかける
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Googleスプレッドシートを編集したら自動で更新日時を入れる
Googleスプレッドシートで図形をコピーして使いまわすには
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
Windows版Google Driveが使用中と言われアンインストールできない場合
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Linux共通】プロキシサーバーの利用設定
Androidホームで左にスワイプすると出てくるニュース共を一切表示させない方法
Ubuntuで固定IPアドレスを使う設定をする