文章目录
编译步骤
参考网页:https://www.cnblogs.com/hongzhunzhun/p/7241192.html
编译的具体操作:
1.下载源码包,地址如下:
openssh http://www.openssh.com/portable.html
openssl http://www.openssl.org/source
zlib http://www.zlib.net/
2.交叉编译
在虚拟机中创建工作目录:
mkdir /work/ssh -p
cd ssh
mkdir compress install source
解压安装包:
(解压包在compressed目录下)
cd /work/ssh/source/
tar -xvf ../compressed/zlib-1.2.1.2.tar.gz
unzip ../compressed/openssl-OpenSSL_0_9_6-stable.zip
tar -xvf ../compressed/openssh-5.2p1.tar.gz
mv zlib-1.2.1.2 zlib
mv openssl-OpenSSL_0_9_6-stable openssl
mv openssh-5.2p1 openssh
交叉编译 zlib:
cd /work/ssh/source/zlib
./configure --prefix=/work/ssh/install/zlib
修改Makefile,不然编译不对
vim Makefile
CC=arm-linux-gnueabi-gcc
AR=arm-linux-gnueabi-ar rc
CPP =arm-linux-gnueabi-gcc -E
LDSHARED=arm-linux-gnueabi-gcc
make
make install
交叉编译openssl
cd /work/ssh/source/openssl
./Configure --prefix=/work/ssh/install/openssl os/compiler:arm-linux-gnueabi-gcc
make
make install
交叉编译openssh
cd /work/ssh/source/ openssh-4.6p1
./configure --host=arm-none-linux-gnueabi --with-libs --with-zlib=/work/ssh/install/zlib-1.2.11 --with-ssl-dir=/work/ssh/install/openssl-0.9.8e --disable-etc-default-login CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar
make
openssh不需要make install
移植步骤
参考网页:https://blog.csdn.net/weixin_43549602/article/details/84025910
打包可执行程序
mkdir /work/ssh/transplant/sbin -p
mkdir /work/ssh/transplant/bin
mkdir /work/ssh/transplant/usr/local/openssh/bin -p
mkdir /work/ssh/transplant/usr/local/openssh/etc
mkdir /work/ssh/transplant/usr/local/libexec
cp /work/ssh/install/{scp,sftps,sh,ssh-add,ssh-agent,ssh-keygen,ssh-keyscan} /work/ssh/transplant/usr/local/openssh/bin
cp /work/ssh/install/{sshd_config,ssh_config} /work/ssh/transplant/usr/local/openssh/etc
cp /work/ssh/install/{sshd} /work/ssh/transplant/sbin
cp /work/ssh/install/{sftp-server,ssh-keysign} /work/ssh/transplant/usr/local/libexec
cd /work/ssh/bin
ln -s /usr/local/openssh/bin/scp
ln -s /usr/local/openssh/bin/sftp
ln -s /usr/local/openssh/bin/ssh
ln -s /usr/local/openssh/bin/ssh-add
ln -s /usr/local/openssh/bin/ssh-agent
ln -s /usr/local/openssh/bin/ssh-keygen
ln -s /usr/local/openssh/bin/ssh-keyscan
cd ../
tar -cvf openssh_exe.bin ./
这里图片是从网上直接拷贝的不全一样
移植到开发板
将openssh.bin拷贝到开发板,然后再根目录解压,我是拷贝到了/opt/下
![](/qrcode.jpg)
cd /
tar -xvf /opt/openssh.bin
cat /etc/passwd
cat /etc/group
需要在/etc/目录下的passwd 和 group中添加相关的东西,但是这里我并不成功,主要问题出现在group和passwd总结配置,还有ssh-keygen 没办法配置ecdsa相关的,我记得提示好像是没有这个,可能是编译器问题,或者说我觉得最大的可能是编译器
我用了别的方法规避,如果有谁能弄好,烦请告知一下,谢谢
原文是这样写的:
openssh_exe.tar.gz直接解压到开发板的根目录。
新增组1000和用户sshd,如下:
~# cat /etc/passwd
root:ML0.Qje4scloA:0:0::/root:/bin/sh
sshd:IS4VGUBxdRfJE:1000:1000::/home/sshd:/bin/sh
~# cat /etc/group
root::0:
sshd:x:1000:sshd
~~
这里虽然我把文件类似的直接照抄了 sshd:IS4VGUBxdRfJE:1000:1000::/home/sshd:/bin/sh sshd❌1000:sshd
~~
这里/home/sshd最后会被当作sshd用户的根目录,权限很重要!!!
/home权限如下:
drwxr-xr-x 3 root root 0 Jan 1 00:06 home
/home/sshd权限如下:
drwxr-xr-x 3 root root 0 Jan 1 00:15 sshd
新增/home/sshd/test权限如下,用作测试:
drwxrwxrwx 2 sshd sshd 0 Jan 1 01:26 test
修改sshd用户密码
~ # passwd sshd
Changing password for sshd
New password:
Bad password: too short
Retype password:
Password for sshd changed by root
~
密码确实很容易修改
~
生成密钥
~ # cd /usr/local/etc/
/usr/local/etc # ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
/usr/local/etc # ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
/usr/local/etc # ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
/usr/local/etc # ssh-keygen -t dsa -f ssh_host_ed25519_key -N ""
~
这里的ecdsa 显示没有文件,别的都正常
~
编辑配置文件,/usr/local/openssh/etc/sshd_config留作备份,实际使用的/usr/local/etc/sshd_config
~
我自己的路径应该是一样的
~
/usr/local/etc # cp /usr/local/openssh/etc/sshd_config .
usr/local/etc # ls -lh
/usr/local/etc # ls -lh
total 11
-rw------- 1 root root 1.3K Jan 1 00:12 ssh_host_dsa_key
-rw-r--r-- 1 root root 601 Jan 1 00:12 ssh_host_dsa_key.pub
-rw------- 1 root root 505 Jan 1 00:12 ssh_host_ecdsa_key
-rw-r--r-- 1 root root 173 Jan 1 00:12 ssh_host_ecdsa_key.pub
-rw------- 1 root root 399 Jan 1 00:12 ssh_host_ed25519_key
-rw-r--r-- 1 root root 93 Jan 1 00:12 ssh_host_ed25519_key.pub
-rw------- 1 root root 1.8K Jan 1 00:11 ssh_host_rsa_key
-rw-r--r-- 1 root root 393 Jan 1 00:11 ssh_host_rsa_key.pub
-rw-r--r-- 1 root root 3.4K Jan 1 00:01 sshd_config
sshd_config修改如下:
PermitRootLogin yes
HostKey /usr/local/etc/ssh_host_rsa_key
HostKey /usr/local/etc/ssh_host_ecdsa_key
HostKey /usr/local/etc/ssh_host_dsa_key
HostKey /usr/local/etc/ssh_host_ed25519_key
PubkeyAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
AllowUsers sshd root
Subsystem sftp internal-sftp
Match group 1000
ChrootDirectory /home/sshd
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
~~
这里我的内容是这样:
PermitRootLogin yes
Protocol 2
HostKey /usr/local/etc/ssh_host_rsa_key
HostKey /usr/local/etc/ssh_host_dsa_key
HostKey /usr/local/etc/ssh_host_ed25519_key
PubkeyAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
AllowUsers sshd root
Subsystem sftp internal-sftp
Match group 1002
ChrootDirectory /home/sshd
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
~~
运行sshd
/sbin/sshd
到这里原文结束了
这里运行一般会有点问题的,出现什么问题就百度一下就好了,当然也可以留言,我看到会想办法帮你的
配置无密码登录
介绍
这个百度直接就可以查到相关的介绍
这里我给的参考是这个:https://jingyan.baidu.com/article/cbcede076bc84302f50b4d4c.html
具体步骤如下:
在虚拟机和开发板产生密钥
在虚拟机和开发板分别输入命令创造密钥
ssh-keygen
输入这个命令以后,之后需要几个选项,直接回车就可以
复制相互的密钥
然后将虚拟机的id_rsa.pub 里面的内容拷贝放到 开发板的authorized_keys文件当中
开发板可能没有authorized_keys这个文件,直接自己创建,然后把虚拟机的id_rsa.pub的内容复制进来就可以了
这个文件在~/.ssh 这个目录当中
最后复制开发板的authorized_keys内容,到虚拟机当中就可以了
最后运行
ssh [email protected]
会有一些报错,但是是可以登录进去的
有错误就多重启几次
主要试错关键点:
1.板子和虚拟机能不能ping通
2.板子和虚拟机能不能打开sshd
3.虚拟机单独能不能被putty的ssh登陆进去