アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【CORESERVERC/C++Git/GitHub
CORESERVERのssh使用コマンドでundefined symbol: EVP_KDF_ctrlとエラーになる場合
POSTED BY
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
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】