命令提示符在ssh连接后显示的时间太长
我有一个非常奇怪的服务器,希望你能帮我找出发生的事情.以下是事实:
>服务器有2个用户:root和myuser 因此,在两种情况下都正确建立了ssh连接(为用户myuser打开了sshd日志写入会话),但在一种情况下,cmd提示立即出现,而在另一种情况下,它会占用太长时间(60秒). 有什么想法可以解决问题吗?如果您需要有关日志消息或配置文件的更多信息,请在评论中告诉我. 更新1 运行strace ssh myuser@1.2.3.4输出以下内容: **lot of stuff** 18:20:10 read(3,"Dq3403425167+367366r31524127235232225344366332D36217254$ 18:20:10 ioctl(0,TIOCGWINSZ,{ws_row=60,ws_col=237,ws_xpixel=0,ws_ypixel=0}) = 0 18:20:10 getsockopt(3,SOL_TCP,TCP_NODELAY,[0],[4]) = 0 18:20:10 setsockopt(3,[1],4) = 0 18:20:10 getsockname(3,{sa_family=AF_INET,sin_port=htons(40713),sin_addr=inet_addr("190.9$ 18:20:10 setsockopt(3,SOL_IP,IP_TOS,[16],4) = 0 18:20:10 select(7,[3],NULL,NULL) = 1 (out [3]) 18:20:10 write(3,"?32275177356212x177334>352K226225)2253507361Zu,I7!273Hv131$ 18:20:10 select(7,[],NULL) = 1 (in [3]) 18:20:10 read(3,"373472072732362442231422230523270206zl270X225i030207343f$ 18:20:10 select(7,[3 4],"J2345334336350364225<Dt305Y23366341!_351310357C252I322|3$ 18:20:10 select(7,[5],NULL) = 1 (out [5]) 18:20:10 write(5,"Last login: Fri Mar 4 18:19:33 "...,58) = 58 18:20:10 select(7,NULL) = 1 (in [3]) # Here is where it waits 60 seconds 18:21:10 read(3,":233225377P216.2u&275372257203261236322aN263313203315373$ 18:21:10 select(7,NULL) = 1 (out [5]) 18:21:10 write(5,"33[?1034h[securitybox@wordpress10"...,41) = 41 18:21:10 select(7,NULL) = 1 (in [4]) 18:21:14 read(4,"e",16384) = 1 18:21:14 select(7,NULL) = 1 (out [3]) 18:21:14 write(3,":24266315J202w+213i320314251vc17230372344237341341o2563$ 18:21:14 select(7,NULL) = 1 (in [3]) 18:21:14 read(3,"eS362U<346345f2452721323<30J20261%1hx&7k323 240n^-1P"...,8$ 18:21:14 select(7,NULL) = 1 (out [5]) 18:21:14 write(5,1) = 1 18:21:14 select(7,"x",16384) = 1 **more stuff** 更新2 知道我意识到在上次登录后:,当它挂断等待时,你可以按下Ctrl C,它会立即显示命令提示符.因此,看起来有一个过程在启动时花了太长时间. 更新3 我增加了服务器端的调试级别,这里是挂起和等待之前的lates输出: Mar 4 17:15:31 thisserver.hostname sshd[2279]: debug3: PAM: opening session Mar 4 17:15:32 thisserver.hostname sshd[2279]: pam_unix(sshd:session): session opened for user securitybox by (uid=0) Mar 4 17:15:32 thisserver.hostname sshd[2279]: User child is on pid 2301 Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug3: mm_request_receive entering Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: PAM: establishing credentials Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: permanently_set_uid: 10037/10037 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug2: set_newkeys: mode 0 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug2: set_newkeys: mode 1 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: Entering interactive session for SSH2. Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug2: fd 4 setting O_NONBLOCK Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug2: fd 6 setting O_NONBLOCK Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: server_init_dispatch_20 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: server_input_channel_open: ctype session rchan 0 win 1048576 max 16384 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: input_session_request Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: channel 0: new [server-session] Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug2: session_new: allocate (allocated 0 max 10) Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug3: session_unused: session id 0 unused Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: session_new: session 0 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: session_open: channel 0 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: session_open: session 0: link with channel 0 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: server_input_channel_open: confirm session Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: server_input_global_request: rtype no-more-sessions@openssh.com want_reply 0 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug3: Wrote 40 bytes for a total of 2701 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: server_input_channel_req: channel 0 request pty-req reply 1 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: session_by_channel: session 0 channel 0 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: session_input_channel_req: session 0 req pty-req Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: Allocating pty. Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug3: mm_request_send entering: type 26 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug3: mm_pty_allocate: waiting for MONITOR_ANS_PTY Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug3: mm_request_receive_expect entering: type 27 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug3: mm_request_receive entering Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug3: monitor_read: checking request 26 Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug3: mm_answer_pty entering Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug2: session_new: allocate (allocated 0 max 10) Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug3: session_unused: session id 0 unused Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug1: session_new: session 0 Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug3: ssh_selinux_setup_pty: setting TTY context on /dev/pts/6 Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug3: ssh_selinux_setup_pty: done Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug3: mm_request_send entering: type 27 Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug3: mm_answer_pty: tty /dev/pts/6 ptyfd 4 Mar 4 17:15:32 thisserver.hostname sshd[2279]: debug3: mm_request_receive entering Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: session_pty_req: session 0 alloc /dev/pts/6 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: server_input_channel_req: channel 0 request shell reply 1 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: session_by_channel: session 0 channel 0 Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug1: session_input_channel_req: session 0 req shell Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug2: fd 3 setting TCP_NODELAY Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug2: channel 0: rfd 9 isatty Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug2: fd 9 setting O_NONBLOCK Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug3: fd 7 is O_NONBLOCK Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug3: Wrote 88 bytes for a total of 2789 Mar 4 17:15:32 thisserver.hostname sshd[2302]: debug1: Setting controlling tty using TIOCSCTTY. Mar 4 17:15:32 thisserver.hostname sshd[2301]: debug3: Wrote 88 bytes for a total of 2877 Mar 4 17:15:32 thisserver.hostname sshd[2302]: debug3: Copy environment: SELINUX_ROLE_REQUESTED= Mar 4 17:15:32 thisserver.hostname sshd[2302]: debug3: Copy environment: SELINUX_LEVEL_REQUESTED= Mar 4 17:15:32 thisserver.hostname sshd[2302]: debug3: Copy environment: SELINUX_USE_CURRENT_RANGE= Mar 4 17:15:32 thisserver.hostname sshd[2302]: debug3: channel 0: close_fds r -1 w -1 e -1 然后过了一会儿,同时出现提示,它会打印: Mar 4 17:16:32 thisserver.hostname sshd[2301]: debug3: Wrote 72 bytes for a total of 2949 在那里你可以看到花了60秒.它总是需要60秒. 这是使用Putty连接时相同日志的输出(请记住,使用Putty会立即显示提示). Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug3: PAM: opening session Mar 4 17:44:45 thisserver.hostname sshd[5505]: pam_unix(sshd:session): session opened for user root by (uid=0) Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug2: set_newkeys: mode 0 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug2: cipher_init: set keylen (16 -> 32) Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug2: set_newkeys: mode 1 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug2: cipher_init: set keylen (16 -> 32) Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: Entering interactive session for SSH2. Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug2: fd 4 setting O_NONBLOCK Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug2: fd 5 setting O_NONBLOCK Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: server_init_dispatch_20 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: server_input_channel_open: ctype session rchan 256 win 16384 max 16384 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: input_session_request Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: channel 0: new [server-session] Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug2: session_new: allocate (allocated 0 max 10) Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug3: session_unused: session id 0 unused Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: session_new: session 0 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: session_open: channel 0 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: session_open: session 0: link with channel 0 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: server_input_channel_open: confirm session Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug3: Wrote 52 bytes for a total of 3185 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: server_input_channel_req: channel 0 request pty-req reply 1 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: session_by_channel: session 0 channel 0 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: session_input_channel_req: session 0 req pty-req Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: Allocating pty. Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: session_pty_req: session 0 alloc /dev/pts/7 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug3: ssh_selinux_setup_pty: setting TTY context on /dev/pts/7 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug3: ssh_selinux_setup_pty: done Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug3: Wrote 36 bytes for a total of 3221 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: server_input_channel_req: channel 0 request shell reply 1 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: session_by_channel: session 0 channel 0 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug1: session_input_channel_req: session 0 req shell Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug2: fd 3 setting TCP_NODELAY Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug2: channel 0: rfd 8 isatty Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug2: fd 8 setting O_NONBLOCK Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug3: fd 6 is O_NONBLOCK Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug3: Wrote 88 bytes for a total of 3309 Mar 4 17:44:45 thisserver.hostname sshd[5508]: debug1: Setting controlling tty using TIOCSCTTY. Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug3: Wrote 100 bytes for a total of 3409 Mar 4 17:44:45 thisserver.hostname sshd[5508]: debug1: PAM: reinitializing credentials Mar 4 17:44:45 thisserver.hostname sshd[5508]: debug1: permanently_set_uid: 0/0 Mar 4 17:44:45 thisserver.hostname sshd[5508]: debug3: Copy environment: SELINUX_ROLE_REQUESTED= Mar 4 17:44:45 thisserver.hostname sshd[5508]: debug3: Copy environment: SELINUX_LEVEL_REQUESTED= Mar 4 17:44:45 thisserver.hostname sshd[5508]: debug3: Copy environment: SELINUX_USE_CURRENT_RANGE= Mar 4 17:44:45 thisserver.hostname sshd[5508]: debug3: channel 0: close_fds r -1 w -1 e -1 Mar 4 17:44:45 thisserver.hostname sshd[5505]: debug3: Wrote 84 bytes for a total of 3493 更新4 我发现这个过程挂在系统调用上: select(7,NULL 这是strace -p $PID的输出,其中$PID是ssh程序的pid,同时使连接成为可能.
当您遇到长登录延迟时,sshd的反向DNS查找始终是候选者.您可以尝试设置
UseDNS no 在/etc/ssh/sshd.conf中(以及之后重新启动sshd)修复了这个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |