ssh问题

我的系统是Linux Ubuntu 14.04 LTS的。 
我想安装Hadoop,之前要安装ssh。 

1. 执行sudo apt-get install ssh,系统提示:Depends: openssh-server (>= 1:6.6p1-2ubuntu1) but it is not going to be installed。 
说依赖openssh-server。 

2. 那我就执行sudo apt-get install openssh-server。 
系统又提示:openssh-server : Depends: openssh-client (= 1:6.6p1-2ubuntu1) but 1:6.6p1-2ubuntu2 is to be installed。 
说依赖openssh-client (= 1:6.6p1-2ubuntu1)。 

3. 我再执行sudo apt-get install openssh-client。 
又提示:openssh-client is already the newest version. 
说openssh-client 已经是最新版本了。 
安装openssh-server非要openssh-client 1:6.6p1-2ubuntu1的,我机器上面已经安装了openssh-client 1:6.6p1-2ubuntu2,怎么办? 

请求大神帮忙!! 
谢谢!




  • sudo apt-get install aptitude
    sudo aptitude install openssh-server



  • 这个问题大概应该是你的/etc/apt/的源有问题,但大概可以这么解决:
    1.sudo apt-get purge openssh-client
    2.sudo apt-get install ssh




  • 你的repo是不是没配对啊,是trusty的吗? dahoo

    repo是什么?我是小白哈。能具体点吗?



  • 这个问题大概应该是你的/etc/apt/的源有问题,但大概可以这么解决: 1.sudo apt-get purge open ... 拨灰听雨公,男

    哦,好的,我试试哈。



  • dahoo (how to disappear completely) 2015-02-08 17:13:44
    repo是什么?我是小白哈。能具体点吗? 求真

    就是软件包的源啊 /etc/apt/source.list


  • 求真2015-02-08 20:04:40
    就是软件包的源啊 /etc/apt/source.list dahoo










--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------








tcp_wrappers


linux tcp_wrappers
tcp_wrappers是linux中一个安全机制[TCP_wrappers防火墙],一定程度上限制某种服务的访问权限,达到了保护系统的目的
一. 要想用好tcp_wrappers,首先检查某种服务是否受tcp_wrappers 管理
ldd $(which domainname) | grep libwrap
   domainname=sshd httpd smb xinetd .........
如果有这个链接,说明某个服务接受tcp_wrappers管理,这种检查不一定正确。
a.一般只要某些进程归xinetd管理,那么这个服务就一定接受tcp_wrappers的管理
  如xinetd管理的进程:
xinetd based services:
 chargen-dgram
 chargen-stream
 cvs
 daytime-dgram
 daytime-stream
 discard-dgram
 discard-stream
 echo-dgram
 echo-stream
 eklogin
 ekrb5-telnet
 gssftp
 klogin
 krb5-telnet
 kshell
 rsync
 tcpmux-server
 telnet
 time-dgram
 time-stream
b.一些独立的进程(daemons)也受tcp_wrappers的管理
  如:  sendmail
 slapd
 sshd
 stunnel
 xinetd
 gdm
 gnone-session
 vsftpd
  portmap
c.注意:有些进程不受tcp_wrappers管理
  如:  httpd
 smb
 squid 等
二. 与tcp_wrappers相关的文件有
/etc/hosts.allow
/etc/hosts.deny
这两个文件被整合在xinetd中.
三. 工作原理
1. 当有请求从远程到达本机的时候
首先检查/etc/hosts.allow
如有匹配的,就默认允许访问,跳过 /etc/hosts.deny这个文件
没有匹配的,就去匹配/etc/hosts.deny 文件,如果有匹配的,那么就拒绝这个访问
2. 如果在这两个文件中,都没有匹配到,默认是允许访问的
四. 这两个文件格式
服务列表 :地址列表 :选项
A. 服务列表格式:如果有多个服务,那么就用逗号隔开
B. 地址列表格式:
1. 标准IP地址:例如:192.168.0.254,192.168.0.56如果多于一个用,隔开
2. 主机名称:例如: www.baidu.com, .example.con匹配整个域
3. 利用掩码:192.168.0.0/255.255.255.0指定整个网段
   注意:tcp_wrappers的掩码只支持长格式,不能用:192.168.0.0/24
4. 网络名称:例如 @mynetwork
五.宏定义
ALL :指代所有主机
LOCAL :指代本地主机
KNOWN :能够解析的
UNKNOWN :不能解析的
PARANOID :
  example:
    /etc/hosts.allow
 sshd:192.168.0.0
    /etc/hosts.deny
 sshd:ALL
 此例子表明:sshd服务只允许192.168.0.0网段的主机访问,其他拒绝。

六. 扩展选项:
spawn : 执行某个命令
 如:
vsftpd:192.168.0.0/255.255.255.0 :spawn echo “login attempt from %c”to %s” | mail –s warning root
 其意是党192.168.0.0网段的主机来访问时,给root发一封邮件,邮件主题是:waring,邮件内容是:客户端主机(%c)试图访问服务端主机(%s)
twist : 中断命令的执行:
vsftpd:192.168.0.0/255.255.255.0: twist echo -e "\n\nWARNING connection not allowed.\n\n" 
 其意是当未经允许的电脑尝试登入你的主机时, 对方的萤幕上就会显示上面的最后一行
七.高级用法
daemaon@host:client_list
对于多块网卡的linux主机,要想用tcp_wrappers做一些控制得基于接口:
如eth0所在的网段:192.168.0.0 eth1所在的网段:192.168.1.0
 则:
    [email protected]:192.168.0.
    [email protected]:192.168.1.
   则两句可以根据需要写到hosts.allow或hosts.deny中

典例:
/etc/hosts.allow
 sshd:ALL EXCEPT .cracker.org EXCEPT trusted.cracker.org
/etc/hosts.deny
 sshd:ALL
此例用到了EXCEPT的嵌套,其意思是:允许所有访问sshd服务,在域.cracker.org的不允许访问
但是trusted.cracker.org除外
sshd:ALL 就是拒绝.cracker.org的访问,因为默认是允许,所以在hosts.deny中必须明确定义。


http://linuxme.blog.51cto.com/1850814/369947





--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------








问题: 能ping通Linux服务器 但是ssh连不上 < Linux redhat AS4 版本 >

    解决方法这个问题花了我20分钟去查资料,网上写的解决方法也是五花八门,不过,总算解决了,分享出来和大家一起学习。

     服务器正常,PING也能PING通。但是就是SSH连不上啊,出现这种问题,最大的可能就是防火墙没有关闭。

   解决方法:

一、开启SSH

       以root用户登录Linux,打开终端,运行: /etc/init.d/sshd restrat

 

二、关闭防火墙

      1.在终端运行  setup
      2,.选择 firewall 回车
      3.按tab键切换到disablede项,然后按空格键选择,然后再按tab键切换到ok,按空格件选择
      4.按tab键切换到quit,按空格件选择

     然后用客户端ssh登录Linux,成功登录,呵呵 ^_^
 

三、关闭防火墙的另一种方式

       /etc/init.d/iptables stop

 

四、如果ping不同,如果是在Vmware中安装的linux,需要在虚拟机设置中,将 NetworkAdapter设置成"Bridged"(桥接), 因为默认是“NAT”。





--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

很多可能的问题
相关的设置有:
ssh server
ipwrappers
iptables
selinux
一个设置不当就会出问题。
ssh链接,那就没有更好的远程操作办法了。除非,想办法hack








--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


黄金参数

ssh -o ConnectTimeout=3 -o ConnectionAttempts=5 -o PasswordAuthentication=no -o StrictHostKeyChecking=no $ip  “command”
1 ConnectTimeout=3                    连接时超时时间,3秒
2 ConnectionAttempts=5                连接失败后重试次数,5次
3 PasswordAuthentication=no           是否使用密码认证,(在遇到没做信任关系时非常有用,不然会卡在那里)
4 StrictHostKeyChecking=no            第一次登陆服务器时自动拉取key文件,(跟上面一样,并且在第一次ssh登陆时,自动应答yes)






--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------





源出现问题:

Windows下做Linux开发,装虚拟机里,怎么可以不用SSH呢。有人说,“做Linux开发,还不直接装机器上跑起来了,还挂虚拟机,开SSH……闲的蛋疼了吧”,不管怎样,我接触Linux算是3年了,用了3年的 Ubuntu了 吧,对Ubuntu算是了解,Ubuntu在Linux众多发行版里做的算是可圈可点的了,但是Linux在PC系统中的很多方面并不是非常到位,用户体 验也好,性能也罢。我也热爱Linux,不过不能否认它在这方面的一些略势,当然他强大的命令行、网络服务,以及那华丽的界面也是windows不可比拟 的。所以根据习惯也好,一般的交叉编译环境或是正常开发环境大多还是在windows+Vmware(或者VisualBox)下完成的,处于网上好多的 SSH服务安装的文章并不是很到位,并且大多都是一篇转了好多遍,我想还是有必要自己整理一下,方便自己将来再用到,顺便也可以帮到别人。

      Ok,现在开始。。。。。

 (请看完全文后再进行操作,我是边写文章边配置的,中间出现了很多问题,看完的话可以让你少走几段弯路。。。)

Ubuntu的apt-get工具之强大无人能及啊,这里不开强大的网络,离开了网络,仿佛就变得鸡肋了。所以,打开终端命令行:

      $ sudo apt-get install openssh-server

我勒个去,怎么回事?我的这命令怎么这样?估计你的也是吧,见下图



怎么回事? 你猜……我猜是apt-get 的源列表里边找不到我想要的openssh吧,是这样。Apt-get应用就是通过一个记录有所有可用软件包的配置文件在服务器上查找你想要的可用软件 包,然后下载并安装的。难怪,现在都11.04了吧,我的跑的是9.04的Ubuntu。谁的服务器还给你维护着两年前的源,就算有,经历了两年的沧海桑 田,对应的更新地址应该也变了。解救而上述问题的方法就是更新你的sources.list,位于/etc/apt/sources.list 。 自己上搜索引擎search一下如何更新源列表,其实也就是复制粘贴,新手别忘了sudo 。另外,随着版本更新,老版本的源列表在执行:

      $ sudo apt-get update

时,会出现大量not   found 。证明该版本的源列表已经过期,尽量找新版本的。

jun更新成功后是:



然后重新执行上边命令试试:

$ sudo apt-get install openssh-server

会自动检索关联包,然后提示下载确认,输入:y  ,回车,等他自行下载安装。

不出意外的话,更新完后就已经安装好了,其实我的除了一些小意外。不过是在自动配置ssh_config的时候,理论上不影响服务的运行的。(因为这时我是在边安装边写文章,一切都是实时的,下一步能不能安装成功,谁知道呢?),哈哈,我们继续。看看我的报错界面:


 

咱们来启动服务试试:

$ sudo /etc/init.d/ssh start

或者 :$ sudo /etc/init.d/ssh resart

不想在这敷衍,我的启动不开了,咱重启一下虚拟机,再试。我猜测是刚才更新东西还有配置是内核还有什么锁没有释放,Linux内核管理还有更新时持有的锁还有更改时的什么东西,都会影响到一些服务的启动,总之试试再说。重启:

      $ sudo halt now (关闭后开启,或者restart,我总感觉halt后启动会快一些)

      $ sudo reboot (额,还是reboot更快)

果然,重启也启动不了。你是不是也遇到同样问题?或许你的已经跑开了,一边乐着去吧,我得把它整理完了。还是启动不了,怎么办?搜集了老久,网上说,把openssh client卸载掉重新安装(ps:Ubuntu默认是已经包含了client的,咱就试试百。)

      $ sudo apt-get remove openssh-client

等待片刻,索性把刚才装的opensshserver 也卸了。一切从零开始。

      $ sudo apt-get remove openssh-server

然后先安装client:

      $ sudo apt-get install openssh-client

还是不行,无果,好人没做成,自己掉进去了。上次装,一下子就OK了……问题是最提升人的,我继续。

原因找到:应该是版本问题,用的是9.04的系统,10.04的更新列表。造成版本的兼容问题。在原来基础上,系统自己检测,经过upgrade manager自动更新了部分库以后,服务自己启动了。看看sshd的进程:



也有可能是更新系统包的时候自动按照原来文件的安装记录,系统自己安装了服务,鬼知道啊。

让我们登陆一下,试试。这里用的是SecureCRT在windows7下访问Ubuntu的,win7下没有超级终端。SecureCRT也非常好用,也可用作串口工具,看看运行效果:

可以相互ping通,服务也正常,但是依然无法连接,继续……我觉得再reboot一下。

额,又二了,什么也没改,在SecureCRT新建一个连接就OK了。看图:

OK,到这里了……谢谢阅读。欢迎转载。Jun奉上。











--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------





如果出现ssh: connect to host XX.XX.XX.XX port 22: Connection refused

请按如下步骤检查:

1、目标主机的ssh server端程序是否安装、服务是否启动,是否在侦听22端口;

检查方法:

june@ubuntu:~$ ps -ef|grep sshd

root      2859     1  020:29 ?        00:00:00 /usr/sbin/sshd -D

root      2901  2859  020:31 ?        00:00:00 sshd: june[priv]   

june      2971  2901  020:31 ?        00:00:00 sshd:june@pts/1    

june@ubuntu:~$

其中/usr/sbin/sshd为ssh clinet/server中server端的守护进程,如果上述结果中没有sshd出现,那么可能就是你的server端程序没有安装(Ubuntu 11.04 默认没有安装ssh server,只安装了ssh client),或者sshd服务没有启动,这两者的解决办法请见下文详述。
2、是否允许该用户登录;
3、本机是否设置了iptables规则,禁止了ssh的连入/连出;

检查方法:

june@ubuntu:~$sudo  iptables -L

[sudo] password for june: 

Chain INPUT (policy ACCEPT)

target    prot opt source               destination         

ACCEPT    tcp  --  anywhere             anywhere            tcp dpt:ssh 

 

Chain FORWARD (policy ACCEPT)

target    prot opt source              destination         

 

Chain OUTPUT (policy ACCEPT)

target    prot opt source              destination         

june@ubuntu:~$
4、查查ssh的配置文件

 ls -lrt /etc/ssh

针对第一点没有安装ssh server或者没开启sshd的用户,可以参考这篇:

Ubuntu如何开启SSH服务

SSH分客户端openssh-client和openssh-server
  如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server:sudo apt-get install openssh-server然后确认sshserver是否启动了:
ps -e |grep ssh
  如果看到sshd那说明ssh-server已经启动了。
  如果没有则可以这样启动:sudo /etc/init.d/ssh start
ssh-server配置文件位于/etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。
  然后重启SSH服务:
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
  然后使用以下方式登陆SSH:
ssh [email protected]    tuns为192.168.0.100机器上的用户名,需要输入密码。
  断开连接:exit

完整过程如下所示:

june@~ 19:57:22>

ssh [email protected]

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@   WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOINGSOMETHING NASTY!

Someone could be eavesdropping on you rightnow (man-in-the-middle attack)!

It is also possible that a host key hasjust been changed.

The fingerprint for the RSA key sent by theremote host is

7f:57:35:cf:23:86:12:cb:e5:51:7a:a3:57:71:15:71.

Please contact your system administrator.

Add correct host key in/home/june/.ssh/known_hosts to get rid of this message.

Offending RSA key in/home/june/.ssh/known_hosts:8

RSA host key for 192.168.1.101 has changedand you have requested strict checking.

Host key verification failed.

june@~ 20:30:55>

june@~ 20:31:36>

rm /home/june/.ssh/known_hosts

june@~ 20:31:46>

ssh [email protected]

The authenticity of host '192.168.1.101(192.168.1.101)' can't be established.

ECDSA key fingerprint is50:9b:b7:15:c0:57:aa:d6:22:7c:97:40:6e:49:6e:94.

Are you sure you want to continueconnecting (yes/no)? yes

Warning: Permanently added '192.168.1.101'(ECDSA) to the list of known hosts.

[email protected]'s password:

Welcome to Ubuntu 11.04 (GNU/Linux2.6.38-8-generic i686)

 

 *Documentation:  https://help.ubuntu.com/

 

Last login: Sat Jun 25 12:38:24 2011

june@ubuntu:~$

转载地址:http://hi.baidu.com/leejun_2005/item/bfc0ded296cb8ebf32db907e






--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


以上都是参考,最终版本:


ubuntu默认并没有安装ssh服务,如果通过ssh链接ubuntu,需要自己手动安装ssh-server。判断是否安装ssh服务,可以通过如下命令进行:

$ ssh localhost

ssh: connect to host localhost port 22: Connection refused

如上所示,表示没有还没有安装,可以通过apt安装,命令如下:

$ sudo apt-get install openssh-server  

系统将自动进行安装,安装完成以后,先启动服务:

$ sudo /etc/init.d/ssh start  

启动后,可以通过如下命令查看服务是否正确启动

$ ps -e|grep ssh   

6212 ?        00:00:00 sshd  

如上表示启动ok。注意,ssh默认的端口是22,可以更改端口,更改后先stop,

然后start就可以了。改配置在/etc/ssh/sshd_config下,如下所示。

$ vi /etc/ssh/sshd_config   

# Package generated configuration file   

# See the sshd(8) manpage for details   

# What ports, IPs and protocols we listen for  

Port 22  

最后,应该是连接的时候了。请看如下命令:

$ ssh exceljava@192.168.158.129

 

启动、停止和重启SSH:

sudo /etc/init.d/ssh start

sudo /etc/init.d/ssh stop

sudo /etc/init.d/ssh restart

或者

sudo start ssh

sudo stop ssh

sudo restart ssh


卸载SSH

先停掉SSH服务:sudo stop ssh

然后:

apt-get remove openssh-server

apt-get purge openssh-server

sudo apt-get purge openssh-client

sudo apt-get remove openssh-client


你可能感兴趣的:(Ubuntu)