summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/ssh.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* kill proxy command on fatal() (we already kill it on clean exit);djm2010-10-061-10/+3
| | | | ok markus@
* install a SIGCHLD handler to reap expiried child process; ok markus@djm2010-09-201-1/+20
|
* unbreak ControlPersist=yes for ControlMaster=yes; ok djm@markus2010-09-021-1/+2
|
* reintroduce commit from tedu@, which I pulled out for release engineering:djm2010-08-311-2/+2
| | | | | OpenSSL_add_all_algorithms is the name of the function we have a man page for, so use that. ok djm
* Implement Elliptic Curve Cryptography modes for key exchange (ECDH) anddjm2010-08-311-9/+18
| | | | | | | | | | | | | | | | | host/user keys (ECDSA) as specified by RFC5656. ECDH and ECDSA offer better performance than plain DH and DSA at the same equivalent symmetric key length, as well as much shorter keys. Only the mandatory sections of RFC5656 are implemented, specifically the three REQUIRED curves nistp256, nistp384 and nistp521 and only ECDH and ECDSA. Point compression (optional in RFC5656 is NOT implemented). Certificate host and user keys using the new ECDSA key types are supported. Note that this code has not been tested for interoperability and may be subject to change. feedback and ok markus@
* backout previous temporarily; discussed with deraadt@djm2010-08-161-2/+2
|
* OpenSSL_add_all_algorithms is the name of the function we have a man pagetedu2010-08-121-2/+2
| | | | for, so use that. ok djm
* close any extra file descriptors inherited from parent at start anddjm2010-08-121-1/+18
| | | | | | | | | | | | reopen stdin/stdout to /dev/null when forking for ControlPersist. prevents tools that fork and run a captive ssh for communication from failing to exit when the ssh completes while they wait for these fds to close. The inherited fds may persist arbitrarily long if a background mux master has been started by ControlPersist. cvs and scp were effected by this. "please commit" markus@
* enable certificates for hostbased authentication, from Iain Morgan;djm2010-08-041-8/+16
| | | | "looks ok" markus@
* add a "ControlPersist" option that automatically starts a backgrounddjm2010-07-191-22/+95
| | | | | | | | ssh(1) multiplex master when connecting. This connection can stay alive indefinitely, or can be set to automatically close after a user-specified duration of inactivity. bz#1330 - patch by dwmw2 AT infradead.org, but further hacked on by wmertens AT cisco.com, apb AT cequrux.com, martin-mindrot-bugzilla AT earth.li and myself; "looks ok" markus@
* expand %h to the hostname in ssh_config Hostname options. While thisdjm2010-07-121-7/+8
| | | | | | | | | | | | sounds useless, it is actually handy for working with unqualified hostnames: Host *.* Hostname %h Host * Hostname %h.example.org "I like it" markus@
* Make ExitOnForwardFailure work with fork-after-authentication ("ssh -f")djm2010-07-121-3/+8
| | | | for protocol 2. ok markus@
* oops, forgot to #include <canohost.h>; spotted and patch from chl@djm2010-06-261-1/+2
|
* Add X11ForwardTimeout option to specify timeout for untrusted X11djm2010-06-251-3/+6
| | | | | | | | | | | authentication cookies to avoid fallback in X11 code to fully-trusted implicit authentication using SO_PEERCRED described at: http://lists.x.org/archives/xorg-devel/2010-May/008636.html After the X11ForwardTimeout has expired the client will now refuse incoming X11 channel opens. based on patch from Tavis Ormandy; "nice" markus@
* log the hostname and address that we connected to at LogLevel=verbosedjm2010-06-251-1/+8
| | | | | | | after authentication is successful to mitigate "phishing" attacks by servers with trusted keys that accept authentication silently and automatically before presenting fake password/passphrase prompts; "nice!" markus@
* mux support for remote forwarding with dynamic port allocation,markus2010-05-161-3/+6
| | | | | | use with LPORT=`ssh -S muxsocket -R0:localhost:25 -O forward somehost` feedback and ok djm@
* Pause the mux channel while waiting for reply from aynch callbacks.djm2010-05-141-2/+5
| | | | | | | | | | | | Prevents misordering of replies if new requests arrive while waiting. Extend channel open confirm callback to allow signalling failure conditions as well as success. Use this to 1) fix a memory leak, 2) start using the above pause mechanism and 3) delay sending a success/ failure message on mux slave session open until we receive a reply from the server. motivated by and with feedback from markus@
* bz#1746 - suppress spurious tty warning when using -O and stdindjm2010-04-101-2/+2
| | | | is not a tty; ok dtucker@ markus@
* Add support for certificate key types for users and hosts.djm2010-02-261-19/+52
| | | | | | | | | | | | | | | | | | | | | | | | OpenSSH certificate key types are not X.509 certificates, but a much simpler format that encodes a public key, identity information and some validity constraints and signs it with a CA key. CA keys are regular SSH keys. This certificate style avoids the attack surface of X.509 certificates and is very easy to deploy. Certified host keys allow automatic acceptance of new host keys when a CA certificate is marked as trusted in ~/.ssh/known_hosts. see VERIFYING HOST KEYS in ssh(1) for details. Certified user keys allow authentication of users when the signing CA key is marked as trusted in authorized_keys. See "AUTHORIZED_KEYS FILE FORMAT" in sshd(8) for details. Certificates are minted using ssh-keygen(1), documentation is in the "CERTIFICATES" section of that manpage. Documentation on the format of certificates is in the file PROTOCOL.certkeys feedback and ok markus@
* tweak previous; ok markusjmc2010-02-081-2/+3
|
* replace our obsolete smartcard code with PKCS#11.markus2010-02-081-12/+17
| | | | | | | | | ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20/pkcs-11v2-20.pdf ssh(1) and ssh-keygen(1) use dlopen(3) directly to talk to a PKCS#11 provider (shared library) while ssh-agent(1) delegates PKCS#11 to a forked a ssh-pkcs11-helper process. PKCS#11 is currently a compile time option. feedback and ok djm@; inspired by patches from Alon Bar-Lev
* rewrite ssh(1) multiplexing code to a more sensible protocol.djm2010-01-261-3/+19
| | | | | | | | | | | | | | | | | | | | | | The new multiplexing code uses channels for the listener and accepted control sockets to make the mux master non-blocking, so no stalls when processing messages from a slave. avoid use of fatal() in mux master protocol parsing so an errant slave process cannot take down a running master. implement requesting of port-forwards over multiplexed sessions. Any port forwards requested by the slave are added to those the master has established. add support for stdio forwarding ("ssh -W host:port ...") in mux slaves. document master/slave mux protocol so that other tools can use it to control a running ssh(1). Note: there are no guarantees that this protocol won't be incompatibly changed (though it is versioned). feedback Salvador Fandino, dtucker@ channel changes ok markus@
* Add a 'netcat mode' (ssh -W). This connects stdio on the client to a singledtucker2010-01-111-3/+54
| | | | | | port forward on the server. This allows, for example, using ssh as a ProxyCommand to route connections via intermediate servers. bz #1618, man page help from jmc@, ok markus@
* Remove RoutingDomain from ssh since it's now not needed. It can be replaceddtucker2010-01-091-2/+1
| | | | | | | | | | | | | with "route exec" or "nc -V" as a proxycommand. "route exec" also ensures that trafic such as DNS lookups stays withing the specified routingdomain. For example (from reyk): # route -T 2 exec /usr/sbin/sshd or inherited from the parent process $ route -T 2 exec sh $ ssh 10.1.2.3 ok deraadt@ markus@ stevesk@ reyk@
* When passing user-controlled options with arguments to other programs,guenther2009-12-201-2/+2
| | | | | | | | | | | | pass the option and option argument as separate argv entries and not smashed into one (e.g., as -l foo and not -lfoo). Also, always pass a "--" argument to stop option parsing, so that a positional argument that starts with a '-' isn't treated as an option. This fixes some error cases as well as the handling of hostnames and filenames that start with a '-'. Based on a diff by halex@ ok halex@ djm@ deraadt@
* Allow to set the rdomain in ssh/sftp/scp/sshd and ssh-keyscan.reyk2009-10-281-1/+2
| | | | ok markus@
* Request roaming to be enabled if UseRoaming is true and the serverandreas2009-10-241-1/+5
| | | | | supports it. ok markus@
* allow for long home dir paths (bz #1615). ok deraadtdtucker2009-07-021-7/+9
|
* pass correct argv[0] to openlog(); ok djm@markus2009-03-171-4/+5
|
* support remote port forwarding with a zero listen port (-R0:...) todjm2009-02-121-4/+11
| | | | | dyamically allocate a listen port at runtime (this is actually specified in rfc4254); bz#1003 ok markus@
* make a2port() return -1 when it encounters an invalid port numberdjm2009-01-221-2/+2
| | | | | | | | | | | rather than 0, which it will now treat as valid (needed for future work) adjust current consumers of a2port() to check its return value is <= 0, which in turn required some things to be converted from u_short => int make use of int vs. u_short consistent in some other places too feedback & ok markus@
* merge dynamic forward parsing into parse_forward(); 'i think this is OK' djm@stevesk2008-11-011-24/+8
|
* add -y to usage();jmc2008-10-091-2/+2
|
* Add -y option to force logging via syslog rather than stderr.djm2008-10-081-5/+9
| | | | | Useful for daemonised ssh connection (ssh -f). Patch originally from and ok'd by markus@
* only send eow and no-more-sessions requests to openssh 5 and newer;markus2008-09-111-2/+3
| | | | fixes interop problems with broken ssh v2 implementations; ok djm@
* When forking after authentication ("ssh -f") with ExitOnForwardFailuredjm2008-07-021-6/+21
| | | | | | enabled, delay the fork until after replies for any -R forwards have been seen. Allows for robust detection of -R forward failure when using -f (similar to bz#92); ok dtucker@
* keyword expansion for localcommand. ok djm@dtucker2008-06-121-7/+23
|
* thal shalt not code past the eightieth columndjm2008-06-121-26/+47
|
* maintain an ordered queue of outstanding global requests that wedjm2008-06-121-27/+26
| | | | | | | | | expect replies to, similar to the per-channel confirmation queue. Use this queue to verify success or failure for remote forward establishment in a race free way. ok dtucker@
* Add a no-more-sessions@openssh.com global request extension that thedjm2008-06-101-1/+10
| | | | | | | | | | | | client sends when it knows that it will never request another session (i.e. when session multiplexing is disabled). This allows a server to disallow further session requests and terminate the session. Why would a non-multiplexing client ever issue additional session requests? It could have been attacked with something like SSH'jack: http://www.storm.net.nz/projects/7 feedback & ok markus
* dingo stole my diff hunkdjm2008-05-091-1/+6
|
* tidy up session multiplexing code, moving it into its own file anddjm2008-05-091-298/+15
| | | | | | | making the function names more consistent - making ssh.c and clientloop.c a fair bit more readable. ok markus@
* Use new channel status confirmation callback system to properly dealdjm2008-05-081-17/+2
| | | | | | | | | | | | | | with "important" channel requests that fail, in particular command exec, shell and subsystem requests. Previously we would optimistically assume that the requests would always succeed, which could cause hangs if they did not (e.g. when the server runs out of fds) or were unimplemented by the server (bz #1384) Also, properly report failing multiplex channel requests via the mux client stderr (subject to LogLevel in the mux master) - better than silently failing. most bits ok markus@ (as part of a larger diff)
* Implement a channel success/failure status confirmation callbackdjm2008-05-081-2/+4
| | | | | | | | | | | | | mechanism. Each channel maintains a queue of callbacks, which will be drained in order (RFC4253 guarantees confirm messages are not reordered within an channel). Also includes a abandonment callback to clean up if a channel is closed without sending confirmation messages. This probably shouldn't happen in compliant implementations, but it could be abused to leak memory. ok markus@ (as part of a larger diff)
* ignore SIGPIPE in multiplex client mode - we can receive this if thedjm2008-01-191-1/+3
| | | | | server runs out of fds on us midway. Report and patch from gregory_shively AT fanniemae.com
* avoid errno trashing in signal handler; ok dtuckerderaadt2007-11-031-1/+5
|
* Use xstrdup/xfree when saving pwname and pwdir; ok deraadt@dtucker2007-11-031-5/+5
|
* bz #1377: getpwuid results were being clobbered by another getpw* callderaadt2007-11-031-3/+10
| | | | | inside tilde_expand_filename(); save the data we need carefully ok djm
* Make LocalCommand work for Protocol 1 too; ok djm@dtucker2007-10-291-1/+6
|
* Plug tiny mem leaks in ControlPath and ProxyCommand option processing; ok djm@dtucker2007-10-291-3/+8
|