version 1.256, 2005/12/08 18:34:11 |
version 1.257, 2005/12/20 04:41:07 |
|
|
" [-R [bind_address:]port:host:hostport] [-S ctl_path]\n" |
" [-R [bind_address:]port:host:hostport] [-S ctl_path]\n" |
" [-w tunnel:tunnel] [user@]hostname [command]\n" |
" [-w tunnel:tunnel] [user@]hostname [command]\n" |
); |
); |
exit(1); |
exit(255); |
} |
} |
|
|
static int ssh_session(void); |
static int ssh_session(void); |
|
|
pw = getpwuid(original_real_uid); |
pw = getpwuid(original_real_uid); |
if (!pw) { |
if (!pw) { |
logit("You don't exist, go away!"); |
logit("You don't exist, go away!"); |
exit(1); |
exit(255); |
} |
} |
/* Take a copy of the returned structure. */ |
/* Take a copy of the returned structure. */ |
pw = pwcopy(pw); |
pw = pwcopy(pw); |
|
|
options.tun_local = a2tun(optarg, &options.tun_remote); |
options.tun_local = a2tun(optarg, &options.tun_remote); |
if (options.tun_local == SSH_TUNID_ERR) { |
if (options.tun_local == SSH_TUNID_ERR) { |
fprintf(stderr, "Bad tun device '%s'\n", optarg); |
fprintf(stderr, "Bad tun device '%s'\n", optarg); |
exit(1); |
exit(255); |
} |
} |
break; |
break; |
case 'q': |
case 'q': |
|
|
else { |
else { |
fprintf(stderr, "Bad escape character '%s'.\n", |
fprintf(stderr, "Bad escape character '%s'.\n", |
optarg); |
optarg); |
exit(1); |
exit(255); |
} |
} |
break; |
break; |
case 'c': |
case 'c': |
|
|
fprintf(stderr, |
fprintf(stderr, |
"Unknown cipher type '%s'\n", |
"Unknown cipher type '%s'\n", |
optarg); |
optarg); |
exit(1); |
exit(255); |
} |
} |
if (options.cipher == SSH_CIPHER_3DES) |
if (options.cipher == SSH_CIPHER_3DES) |
options.ciphers = "3des-cbc"; |
options.ciphers = "3des-cbc"; |
|
|
else { |
else { |
fprintf(stderr, "Unknown mac type '%s'\n", |
fprintf(stderr, "Unknown mac type '%s'\n", |
optarg); |
optarg); |
exit(1); |
exit(255); |
} |
} |
break; |
break; |
case 'M': |
case 'M': |
|
|
options.port = a2port(optarg); |
options.port = a2port(optarg); |
if (options.port == 0) { |
if (options.port == 0) { |
fprintf(stderr, "Bad port '%s'\n", optarg); |
fprintf(stderr, "Bad port '%s'\n", optarg); |
exit(1); |
exit(255); |
} |
} |
break; |
break; |
case 'l': |
case 'l': |
|
|
fprintf(stderr, |
fprintf(stderr, |
"Bad local forwarding specification '%s'\n", |
"Bad local forwarding specification '%s'\n", |
optarg); |
optarg); |
exit(1); |
exit(255); |
} |
} |
break; |
break; |
|
|
|
|
fprintf(stderr, |
fprintf(stderr, |
"Bad remote forwarding specification " |
"Bad remote forwarding specification " |
"'%s'\n", optarg); |
"'%s'\n", optarg); |
exit(1); |
exit(255); |
} |
} |
break; |
break; |
|
|
|
|
if ((fwd.listen_host = hpdelim(&cp)) == NULL) { |
if ((fwd.listen_host = hpdelim(&cp)) == NULL) { |
fprintf(stderr, "Bad dynamic forwarding " |
fprintf(stderr, "Bad dynamic forwarding " |
"specification '%.100s'\n", optarg); |
"specification '%.100s'\n", optarg); |
exit(1); |
exit(255); |
} |
} |
if (cp != NULL) { |
if (cp != NULL) { |
fwd.listen_port = a2port(cp); |
fwd.listen_port = a2port(cp); |
|
|
if (fwd.listen_port == 0) { |
if (fwd.listen_port == 0) { |
fprintf(stderr, "Bad dynamic port '%s'\n", |
fprintf(stderr, "Bad dynamic port '%s'\n", |
optarg); |
optarg); |
exit(1); |
exit(255); |
} |
} |
add_local_forward(&options, &fwd); |
add_local_forward(&options, &fwd); |
xfree(p); |
xfree(p); |
|
|
line = xstrdup(optarg); |
line = xstrdup(optarg); |
if (process_config_line(&options, host ? host : "", |
if (process_config_line(&options, host ? host : "", |
line, "command-line", 0, &dummy) != 0) |
line, "command-line", 0, &dummy) != 0) |
exit(1); |
exit(255); |
xfree(line); |
xfree(line); |
break; |
break; |
case 's': |
case 's': |
|
|
options.address_family, options.connection_attempts, |
options.address_family, options.connection_attempts, |
original_effective_uid == 0 && options.use_privileged_port, |
original_effective_uid == 0 && options.use_privileged_port, |
options.proxy_command) != 0) |
options.proxy_command) != 0) |
exit(1); |
exit(255); |
|
|
/* |
/* |
* If we successfully made the connection, load the host private key |
* If we successfully made the connection, load the host private key |