version 1.172, 2002/05/22 23:18:25 |
version 1.173, 2002/05/23 19:24:30 |
|
|
struct sockaddr_storage hostaddr; |
struct sockaddr_storage hostaddr; |
|
|
/* Private host keys. */ |
/* Private host keys. */ |
struct { |
Sensitive sensitive_data; |
Key **keys; |
|
int nkeys; |
|
} sensitive_data; |
|
|
|
/* Original real UID. */ |
/* Original real UID. */ |
uid_t original_real_uid; |
uid_t original_real_uid; |
|
|
*/ |
*/ |
sensitive_data.nkeys = 0; |
sensitive_data.nkeys = 0; |
sensitive_data.keys = NULL; |
sensitive_data.keys = NULL; |
|
sensitive_data.external_keysign = 0; |
if (!cerr && (options.rhosts_rsa_authentication || |
if (!cerr && (options.rhosts_rsa_authentication || |
options.hostbased_authentication)) { |
options.hostbased_authentication)) { |
sensitive_data.nkeys = 3; |
sensitive_data.nkeys = 3; |
|
|
_PATH_HOST_DSA_KEY_FILE, "", NULL); |
_PATH_HOST_DSA_KEY_FILE, "", NULL); |
sensitive_data.keys[2] = key_load_private_type(KEY_RSA, |
sensitive_data.keys[2] = key_load_private_type(KEY_RSA, |
_PATH_HOST_RSA_KEY_FILE, "", NULL); |
_PATH_HOST_RSA_KEY_FILE, "", NULL); |
|
|
|
if (sensitive_data.keys[0] == NULL && |
|
sensitive_data.keys[1] == NULL && |
|
sensitive_data.keys[2] == NULL) { |
|
sensitive_data.keys[1] = key_load_public( |
|
_PATH_HOST_DSA_KEY_FILE, NULL); |
|
sensitive_data.keys[2] = key_load_public( |
|
_PATH_HOST_RSA_KEY_FILE, NULL); |
|
sensitive_data.external_keysign = 1; |
|
} |
} |
} |
/* |
/* |
* Get rid of any extra privileges that we may have. We will no |
* Get rid of any extra privileges that we may have. We will no |
|
|
signal(SIGPIPE, SIG_IGN); /* ignore SIGPIPE early */ |
signal(SIGPIPE, SIG_IGN); /* ignore SIGPIPE early */ |
|
|
/* Log into the remote system. This never returns if the login fails. */ |
/* Log into the remote system. This never returns if the login fails. */ |
ssh_login(sensitive_data.keys, sensitive_data.nkeys, |
ssh_login(&sensitive_data, host, (struct sockaddr *)&hostaddr, pw); |
host, (struct sockaddr *)&hostaddr, pw); |
|
|
|
/* We no longer need the private host keys. Clear them now. */ |
/* We no longer need the private host keys. Clear them now. */ |
if (sensitive_data.nkeys != 0) { |
if (sensitive_data.nkeys != 0) { |