序言

今天我又开启了我得linux嵌入式之旅,不过这次我是带着非常认真的态度来得,所以我打算所有的环境配置都自己配置,我不用ubuntu,而是使用deepin。今天遇到的第一个问题就是如何配置ssh,以方便在主机和虚拟机之间传输数据。主要的配置还是在虚拟机端。本篇文章主要用来记录一些ssh方面的问题,分为如下部分:

  • ssh是什么?
  • 如何使用ssh
  • ssh使用中的常见问题

ssh是什么

ssh的全称是Secure Shell,下面是wiki的解释
什么是Secure Shell

如何使用ssh

首先在主机上安装ssh软件,具体怎么安装就不说了
然后再虚拟机中安装,linux中使用如下面命令

apt-get install ssh

安装完成之后,我们需要更改一些参数,输入如下命令,打开ssh的配置文件

vim /etc/ssh/sshd_config

现在结尾添加下面的内容,这段是用来指定加密协议的,具体原理我也不清楚

Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc

MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96

KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org

把下面这行的注释去掉,是打开22号端口的意思,如果认真阅读了前面的ssh介绍会知道ssh是使用22号端口的

Port 22

把下面这行的注释也去掉,表示允许外界主机接入

PermitRootLogin prohibit-password

虚拟机配置完成

我们在主机端,依次输入主机名(虚拟机上面的系统的IP地址),用户名,端口号(默认22不要动),点击connect就可以了。

Bad SSH2 cipher spec

通过查看资料得出大概原因是,sshd启动的时候会读取配置文件sshd_config内容,然后和代码里面的数组ciphers(文件cipher.c)比较,如果 ciphers 的数组配置与 sshd_config 不一样的话,就会引发 Bad SSH2 cipher spec 的错误,而升级系统刚好升级了openssh,但是配置并没有改变,所以导致配置与版本不一致。

解决起来也很简单,通过下以命令查看ssh使用了哪些ciphers:

$ ssh -Q cipher

3des-cbc
blowfish-cbc
cast128-cbc
arcfour
arcfour128
arcfour256
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com

引用自Bad SSH2 cipher spec

SSH服务器拒绝了密码问题

Xshell连接Ubuntu时SSH服务器拒绝了密码问题

ssh中的常见问题

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐