动机是我想用在windows上用putty ssh访问虚机里的Ubuntu13.04
第一步是更改virtual box的设置, 在网络设置中配置一个NAT的端口映射协议。virtualbox虚拟网络适配器的网关是192.168.56.1,而虚机的ip地址是10.0.2.15。一般来说这两个地址都是默认值。现在要把192.168.56.1的22端口映射到10.0.2.15的22端口,这步就OK了。
第二步安装SSH server端。一开始用
sudo apt-get install openssh-server一直报“找不到这个包,但有其他包引用它,所以认为这个包废弃了”这样的错误。
解决办法:
更新 /etc/apt/source.list
在文件最上面加入:
deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse其中mirror是apt新支持的函数,能够就近帮你找到update的源。
然后再:
sudo apt-get update此时获得最新的包的列表就能安装openssh-server了。
但别以为就能顺利装上,还有问题等着呢。
第三步:解决openssh-client和openssh-server的版本冲突
直接安装server会报错,说是本机已安装openssh-client(=某个版本号),和要装的openssh-server的版本号不同。
一开始我想直接upgrade openssh-client就完了,但是有一个linux内核更新(linux-image-3.8.0-35-generic)的更新会死活装不上去。这条路走不通。
所以正确的方法是:
sudo apt-get remove openssh-client sudo apt-get install openssh-server openssh-client没错,就是先删了client,再一起装server和client。
补充一个也许可行的办法,就是把linux-image-3.8.0-35-generic这个更新mark为hold, 强制不更新它:
sudo apt-mark hold linux-image-3.8.0-35-generic