不可以。但是您可以通过将 libcrypto(OpenSSH 实际使用的 OpenSSL 的一部分)静态链接到sshd
.
在我的系统上,我可以通过手动运行以下命令来做到这一点make sshd
:
gcc -o sshd sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o audit.o \
audit-bsm.o audit-linux.o platform.o sshpty.o sshlogin.o servconf.o serverloop.o \
auth.o auth1.o auth2.o auth-options.o session.o auth-chall.o auth2-chall.o \
groupaccess.o auth-skey.o auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \
auth2-none.o auth2-passwd.o auth2-pubkey.o monitor_mm.o monitor.o monitor_wrap.o \
kexdhs.o kexgexs.o kexecdhs.o kexc25519s.o auth-krb5.o auth2-gss.o gss-serv.o \
gss-serv-krb5.o loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \
sftp-server.o sftp-common.o roaming_common.o roaming_serv.o sandbox-null.o \
sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o sandbox-seccomp-filter.o \
sandbox-capsicum.o -L. -Lopenbsd-compat/ -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack \
-fstack-protector-strong -lssh -lopenbsd-compat \
/usr/lib/x86_64-linux-gnu/libcrypto.a -ldl -lutil -lz -lnsl -lcrypt -lresolv
(这是替换-lcrypto
完整路径libcrypto.a
并从生成的链接器命令中删除-pie
标志的结果make
)。
然后,running strip
onsshd
将其大小减少到大约 2MB。
显然,如果您只打算在设备上发货,这是有道理sshd
的。如果你ssh
也需要那里,它就变得没用了。