Lines Matching refs:ssh
115 void session_set_fds(struct ssh *, Session *, int, int, int, int, int);
118 int session_setup_x11fwd(struct ssh *, Session *);
119 int do_exec_pty(struct ssh *, Session *, const char *);
120 int do_exec_no_pty(struct ssh *, Session *, const char *);
121 int do_exec(struct ssh *, Session *, const char *);
122 void do_login(struct ssh *, Session *, const char *);
123 void do_child(struct ssh *, Session *, const char *);
127 static void do_authenticated2(struct ssh *, Authctxt *);
129 static int session_pty_req(struct ssh *, Session *);
184 auth_input_request_forwarding(struct ssh *ssh, struct passwd * pw) in auth_input_request_forwarding() argument
202 ssh_packet_send_debug(ssh, "Agent forwarding disabled: " in auth_input_request_forwarding()
224 nc = channel_new(ssh, "auth-listener", in auth_input_request_forwarding()
294 set_fwdpermit_from_authopts(struct ssh *ssh, const struct sshauthopt *opts) in set_fwdpermit_from_authopts() argument
301 channel_clear_permission(ssh, FORWARD_USER, FORWARD_LOCAL); in set_fwdpermit_from_authopts()
310 channel_add_permission(ssh, in set_fwdpermit_from_authopts()
316 channel_clear_permission(ssh, FORWARD_USER, FORWARD_REMOTE); in set_fwdpermit_from_authopts()
325 channel_add_permission(ssh, in set_fwdpermit_from_authopts()
333 do_authenticated(struct ssh *ssh, Authctxt *authctxt) in do_authenticated() argument
341 set_fwdpermit_from_authopts(ssh, auth_opts); in do_authenticated()
345 channel_disable_admin(ssh, FORWARD_LOCAL); in do_authenticated()
346 channel_disable_admin(ssh, FORWARD_REMOTE); in do_authenticated()
349 channel_disable_admin(ssh, FORWARD_LOCAL); in do_authenticated()
351 channel_permit_all(ssh, FORWARD_LOCAL); in do_authenticated()
353 channel_disable_admin(ssh, FORWARD_REMOTE); in do_authenticated()
355 channel_permit_all(ssh, FORWARD_REMOTE); in do_authenticated()
357 auth_debug_send(ssh); in do_authenticated()
361 do_authenticated2(ssh, authctxt); in do_authenticated()
363 do_cleanup(ssh, authctxt); in do_authenticated()
388 do_exec_no_pty(struct ssh *ssh, Session *s, const char *command) in do_exec_no_pty() argument
505 do_child(ssh, s, command); in do_exec_no_pty()
517 ssh_packet_set_interactive(ssh, s->display != NULL, in do_exec_no_pty()
533 session_set_fds(ssh, s, pin[1], pout[0], perr[0], in do_exec_no_pty()
544 session_set_fds(ssh, s, inout[1], inout[1], err[1], in do_exec_no_pty()
557 do_exec_pty(struct ssh *ssh, Session *s, const char *command) in do_exec_pty() argument
623 do_login(ssh, s, command); in do_exec_pty()
629 do_child(ssh, s, command); in do_exec_pty()
646 ssh_packet_set_interactive(ssh, 1, in do_exec_pty()
648 session_set_fds(ssh, s, ptyfd, fdout, -1, 1, 1); in do_exec_pty()
657 do_exec(struct ssh *ssh, Session *s, const char *command) in do_exec() argument
703 ssh_remote_ipaddr(ssh), in do_exec()
704 ssh_remote_port(ssh), in do_exec()
719 ret = do_exec_pty(ssh, s, command); in do_exec()
721 ret = do_exec_no_pty(ssh, s, command); in do_exec()
737 do_login(struct ssh *ssh, Session *s, const char *command) in do_login() argument
750 if (ssh_packet_connection_is_on_socket(ssh)) { in do_login()
751 if (getpeername(ssh_packet_get_connection_in(ssh), in do_login()
761 session_get_remote_name_or_ip(ssh, utmp_len, in do_login()
982 do_setup_env(struct ssh *ssh, Session *s, const char *shell) in do_setup_env() argument
1183 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh), in do_setup_env()
1184 ssh_local_port(ssh)); in do_setup_env()
1187 laddr = get_local_ipaddr(ssh_packet_get_connection_in(ssh)); in do_setup_env()
1189 ssh_remote_ipaddr(ssh), ssh_remote_port(ssh), in do_setup_env()
1190 laddr, ssh_local_port(ssh)); in do_setup_env()
1218 do_rc_files(struct ssh *ssh, Session *s, const char *shell) in do_rc_files() argument
1484 child_close_fds(struct ssh *ssh) in child_close_fds() argument
1493 if (ssh_packet_get_connection_in(ssh) == in child_close_fds()
1494 ssh_packet_get_connection_out(ssh)) in child_close_fds()
1495 close(ssh_packet_get_connection_in(ssh)); in child_close_fds()
1497 close(ssh_packet_get_connection_in(ssh)); in child_close_fds()
1498 close(ssh_packet_get_connection_out(ssh)); in child_close_fds()
1505 channel_close_all(ssh); in child_close_fds()
1532 do_child(struct ssh *ssh, Session *s, const char *command) in do_child() argument
1540 sshpkt_fmt_connection_id(ssh, remote_id, sizeof(remote_id)); in do_child()
1544 ssh_packet_clear_keys(ssh); in do_child()
1549 child_close_fds(ssh); in do_child()
1594 env = do_setup_env(ssh, s, shell); in do_child()
1607 child_close_fds(ssh); in do_child()
1658 do_rc_files(ssh, s, shell); in do_child()
1903 session_window_change_req(struct ssh *ssh, Session *s) in session_window_change_req() argument
1907 if ((r = sshpkt_get_u32(ssh, &s->col)) != 0 || in session_window_change_req()
1908 (r = sshpkt_get_u32(ssh, &s->row)) != 0 || in session_window_change_req()
1909 (r = sshpkt_get_u32(ssh, &s->xpixel)) != 0 || in session_window_change_req()
1910 (r = sshpkt_get_u32(ssh, &s->ypixel)) != 0 || in session_window_change_req()
1911 (r = sshpkt_get_end(ssh)) != 0) in session_window_change_req()
1912 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); in session_window_change_req()
1918 session_pty_req(struct ssh *ssh, Session *s) in session_pty_req() argument
1927 ssh_packet_disconnect(ssh, "Protocol error: you already have a pty."); in session_pty_req()
1931 if ((r = sshpkt_get_cstring(ssh, &s->term, NULL)) != 0 || in session_pty_req()
1932 (r = sshpkt_get_u32(ssh, &s->col)) != 0 || in session_pty_req()
1933 (r = sshpkt_get_u32(ssh, &s->row)) != 0 || in session_pty_req()
1934 (r = sshpkt_get_u32(ssh, &s->xpixel)) != 0 || in session_pty_req()
1935 (r = sshpkt_get_u32(ssh, &s->ypixel)) != 0) in session_pty_req()
1936 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); in session_pty_req()
1956 ssh_tty_parse_modes(ssh, s->ttyfd); in session_pty_req()
1958 if ((r = sshpkt_get_end(ssh)) != 0) in session_pty_req()
1959 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); in session_pty_req()
1972 session_subsystem_req(struct ssh *ssh, Session *s) in session_subsystem_req() argument
1979 if ((r = sshpkt_get_cstring(ssh, &s->subsys, NULL)) != 0 || in session_subsystem_req()
1980 (r = sshpkt_get_end(ssh)) != 0) in session_subsystem_req()
1981 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); in session_subsystem_req()
2001 channel_set_xtype(ssh, s->chanid, type); in session_subsystem_req()
2003 success = do_exec(ssh, s, cmd) == 0; in session_subsystem_req()
2016 session_x11_req(struct ssh *ssh, Session *s) in session_x11_req() argument
2026 if ((r = sshpkt_get_u8(ssh, &single_connection)) != 0 || in session_x11_req()
2027 (r = sshpkt_get_cstring(ssh, &s->auth_proto, NULL)) != 0 || in session_x11_req()
2028 (r = sshpkt_get_cstring(ssh, &s->auth_data, NULL)) != 0 || in session_x11_req()
2029 (r = sshpkt_get_u32(ssh, &s->screen)) != 0 || in session_x11_req()
2030 (r = sshpkt_get_end(ssh)) != 0) in session_x11_req()
2031 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); in session_x11_req()
2037 success = session_setup_x11fwd(ssh, s); in session_x11_req()
2052 session_shell_req(struct ssh *ssh, Session *s) in session_shell_req() argument
2056 if ((r = sshpkt_get_end(ssh)) != 0) in session_shell_req()
2057 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); in session_shell_req()
2059 channel_set_xtype(ssh, s->chanid, "session:shell"); in session_shell_req()
2061 return do_exec(ssh, s, NULL) == 0; in session_shell_req()
2065 session_exec_req(struct ssh *ssh, Session *s) in session_exec_req() argument
2071 if ((r = sshpkt_get_cstring(ssh, &command, NULL)) != 0 || in session_exec_req()
2072 (r = sshpkt_get_end(ssh)) != 0) in session_exec_req()
2073 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); in session_exec_req()
2075 channel_set_xtype(ssh, s->chanid, "session:command"); in session_exec_req()
2077 success = do_exec(ssh, s, command) == 0; in session_exec_req()
2083 session_break_req(struct ssh *ssh, Session *s) in session_break_req() argument
2087 if ((r = sshpkt_get_u32(ssh, NULL)) != 0 || /* ignore */ in session_break_req()
2088 (r = sshpkt_get_end(ssh)) != 0) in session_break_req()
2089 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); in session_break_req()
2097 session_env_req(struct ssh *ssh, Session *s) in session_env_req() argument
2103 if ((r = sshpkt_get_cstring(ssh, &name, NULL)) != 0 || in session_env_req()
2104 (r = sshpkt_get_cstring(ssh, &val, NULL)) != 0 || in session_env_req()
2105 (r = sshpkt_get_end(ssh)) != 0) in session_env_req()
2106 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); in session_env_req()
2158 session_signal_req(struct ssh *ssh, Session *s) in session_signal_req() argument
2163 if ((r = sshpkt_get_cstring(ssh, &signame, NULL)) != 0 || in session_signal_req()
2164 (r = sshpkt_get_end(ssh)) != 0) { in session_signal_req()
2204 session_auth_agent_req(struct ssh *ssh, Session *s) in session_auth_agent_req() argument
2209 if ((r = sshpkt_get_end(ssh)) != 0) in session_auth_agent_req()
2210 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); in session_auth_agent_req()
2220 return auth_input_request_forwarding(ssh, s->pw); in session_auth_agent_req()
2225 session_input_channel_req(struct ssh *ssh, Channel *c, const char *rtype) in session_input_channel_req() argument
2242 success = session_shell_req(ssh, s); in session_input_channel_req()
2244 success = session_exec_req(ssh, s); in session_input_channel_req()
2246 success = session_pty_req(ssh, s); in session_input_channel_req()
2248 success = session_x11_req(ssh, s); in session_input_channel_req()
2250 success = session_auth_agent_req(ssh, s); in session_input_channel_req()
2252 success = session_subsystem_req(ssh, s); in session_input_channel_req()
2254 success = session_env_req(ssh, s); in session_input_channel_req()
2258 success = session_window_change_req(ssh, s); in session_input_channel_req()
2260 success = session_break_req(ssh, s); in session_input_channel_req()
2262 success = session_signal_req(ssh, s); in session_input_channel_req()
2269 session_set_fds(struct ssh *ssh, Session *s, in session_set_fds() argument
2278 channel_set_fds(ssh, s->chanid, in session_set_fds()
2349 session_close_x11(struct ssh *ssh, int id) in session_close_x11() argument
2353 if ((c = channel_by_id(ssh, id)) == NULL) { in session_close_x11()
2358 channel_cancel_cleanup(ssh, id); in session_close_x11()
2360 chan_mark_dead(ssh, c); in session_close_x11()
2365 session_close_single_x11(struct ssh *ssh, int id, int force, void *arg) in session_close_single_x11() argument
2371 channel_cancel_cleanup(ssh, id); in session_close_single_x11()
2382 session_close_x11(ssh, s->x11_chanids[i]); in session_close_single_x11()
2397 session_exit_message(struct ssh *ssh, Session *s, int status) in session_exit_message() argument
2403 if ((c = channel_lookup(ssh, s->chanid)) == NULL) in session_exit_message()
2407 channel_request_start(ssh, s->chanid, "exit-status", 0); in session_exit_message()
2408 if ((r = sshpkt_put_u32(ssh, WEXITSTATUS(status))) != 0 || in session_exit_message()
2409 (r = sshpkt_send(ssh)) != 0) in session_exit_message()
2410 sshpkt_fatal(ssh, r, "%s: exit reply", __func__); in session_exit_message()
2413 channel_request_start(ssh, s->chanid, "exit-signal", 0); in session_exit_message()
2417 if ((r = sshpkt_put_cstring(ssh, sig2name(WTERMSIG(status)))) != 0 || in session_exit_message()
2418 (r = sshpkt_put_u8(ssh, WCOREDUMP(status)? 1 : 0)) != 0 || in session_exit_message()
2419 (r = sshpkt_put_cstring(ssh, "")) != 0 || in session_exit_message()
2420 (r = sshpkt_put_cstring(ssh, "")) != 0 || in session_exit_message()
2421 (r = sshpkt_send(ssh)) != 0) in session_exit_message()
2422 sshpkt_fatal(ssh, r, "%s: exit reply", __func__); in session_exit_message()
2427 ssh_packet_disconnect(ssh, "wait returned status %04x.", in session_exit_message()
2443 channel_register_cleanup(ssh, c->self, session_close_by_channel, 1); in session_exit_message()
2452 chan_write_failed(ssh, c); in session_exit_message()
2456 session_close(struct ssh *ssh, Session *s) in session_close() argument
2462 ssh_remote_ipaddr(ssh), in session_close()
2463 ssh_remote_port(ssh), in session_close()
2487 session_close_by_pid(struct ssh *ssh, pid_t pid, int status) in session_close_by_pid() argument
2495 session_exit_message(ssh, s, status); in session_close_by_pid()
2506 session_close_by_channel(struct ssh *ssh, int id, int force, void *arg) in session_close_by_channel() argument
2529 channel_cancel_cleanup(ssh, s->chanid); in session_close_by_channel()
2534 session_close_x11(ssh, s->x11_chanids[i]); in session_close_by_channel()
2540 session_close(ssh, s); in session_close_by_channel()
2544 session_destroy_all(struct ssh *ssh, void (*closefunc)(Session *)) in session_destroy_all() argument
2553 session_close(ssh, s); in session_destroy_all()
2596 session_setup_x11fwd(struct ssh *ssh, Session *s) in session_setup_x11fwd() argument
2604 ssh_packet_send_debug(ssh, "X11 forwarding disabled by key options."); in session_setup_x11fwd()
2613 ssh_packet_send_debug(ssh, "No xauth program; cannot forward X11."); in session_setup_x11fwd()
2620 if (x11_create_display_inet(ssh, options.x11_display_offset, in session_setup_x11fwd()
2627 channel_register_cleanup(ssh, s->x11_chanids[i], in session_setup_x11fwd()
2654 ssh_packet_send_debug(ssh, "Can't get IP address for X11 DISPLAY."); in session_setup_x11fwd()
2672 do_authenticated2(struct ssh *ssh, Authctxt *authctxt) in do_authenticated2() argument
2674 server_loop2(ssh, authctxt); in do_authenticated2()
2678 do_cleanup(struct ssh *ssh, Authctxt *authctxt) in do_cleanup() argument
2734 session_destroy_all(ssh, session_pty_cleanup2); in do_cleanup()
2740 session_get_remote_name_or_ip(struct ssh *ssh, u_int utmp_size, int use_dns) in session_get_remote_name_or_ip() argument
2745 remote = auth_get_canonical_hostname(ssh, use_dns); in session_get_remote_name_or_ip()
2747 remote = ssh_remote_ipaddr(ssh); in session_get_remote_name_or_ip()