* PATCH: Completion/Unix/Command/_ssh: Update (mostly) for 5.9.
@ 2011-11-05 21:30 Simon Ruderich
0 siblings, 0 replies; only message in thread
From: Simon Ruderich @ 2011-11-05 21:30 UTC (permalink / raw)
To: zsh-workers
[-- Attachment #1: Type: text/plain, Size: 15667 bytes --]
---
Hi,
This patch updates _ssh for OpenSSH 5.9, only ssh-keygen is not
up-to-date.
Regards,
Simon
Completion/Unix/Command/_ssh | 260 ++++++++++++++++++++++++++++--------------
1 files changed, 176 insertions(+), 84 deletions(-)
diff --git a/Completion/Unix/Command/_ssh b/Completion/Unix/Command/_ssh
index d0bf6ba..d0944c6 100644
--- a/Completion/Unix/Command/_ssh
+++ b/Completion/Unix/Command/_ssh
@@ -1,5 +1,11 @@
#compdef ssh slogin=ssh scp ssh-add ssh-agent ssh-keygen sftp
+# Completions currently based on OpenSSH 5.9 (released on 2011-09-06).
+#
+# TODO: update ssh-keygen (not based on 5.9)
+# TODO: sshd, ssh-keyscan, ssh-keysign
+
+
_remote_files () {
# There should be coloring based on all the different ls -F classifiers.
local expl rempat remfiles remdispf remdispd args suf ret=1
@@ -38,79 +44,100 @@ _ssh () {
typeset -A opt_args
common=(
- '-c+[select encryption cipher]:encryption cipher:(idea des 3des blowfish arcfour tss none)'
- '-C[compress data]'
- '-F+[specify alternate config file]:config file:_files'
- '-i+[select identity file]:SSH identity file:_files'
- '*-o+[specify extra options]:option string:->option'
'(-2)-1[forces ssh to try protocol version 1 only]'
'(-1)-2[forces ssh to try protocol version 2 only]'
'(-6)-4[forces ssh to use IPv4 addresses only]'
'(-4)-6[forces ssh to use IPv6 addresses only]'
+ '-C[compress data]'
+ '-c+[select encryption cipher]:encryption cipher:(idea des 3des blowfish arcfour tss none)'
+ '-F+[specify alternate config file]:config file:_files'
+ '-i+[select identity file]:SSH identity file:_files'
+ '*-o+[specify extra options]:option string:->option'
+ )
+ common_transfer=(
+ '-l[limit used bandwidth]:bandwidth in KiB/s:'
+ '-P+[specify port on remote host]:port number on remote host'
+ '-p[preserve modification times, access times and modes]'
+ '-q[disable progress meter and warnings]'
+ '-r[recursively copy directories (follows symbolic links)]'
+ '-S+[specify ssh program]:path to ssh:_command_names -e' \
+ '-v[verbose mode]'
)
case "$service" in
ssh)
_arguments -C -s \
- '(-A)-a[disable forwarding of authentication agent connection]' \
'(-a)-A[enables forwarding of the authentication agent connection]' \
+ '(-A)-a[disable forwarding of authentication agent connection]' \
'(-P)-b+[specify interface to transmit on]:bind address:_bind_addresses' \
- '-D+[specify a dynamic port forwarding]:port' \
+ '-D+[specify a dynamic port forwarding]:[bind-address]\:port' \
'-e+[set escape character]:escape character (or `none'"'"'):' \
'(-n)-f[go to background]' \
'-g[allow remote hosts to connect to local forwarded ports]' \
- '-I+[specify smartcard device]:device:_files' \
- '-k[disable forwarding of kerberos tickets]' \
+ '-I+[specify the PKCS#11 shared library to use]' \
+ '-K[enable GSSAPI-based authentication and forwarding]' \
+ '-k[disable forwarding of GSSAPI credentials]' \
+ '*-L[specify local port forwarding]:local port forwarding:->forward' \
'-l+[specify login name]:login name:_ssh_users' \
+ '-M[master mode for connection sharing]' \
'(-1)-m+[specify mac algorithms]:mac spec' \
+ '(-1)-N[do not execute a remote command (protocol version 2 only)]' \
'-n[redirect stdin from /dev/null]' \
- '(-1)-N[do not execute a remote command. (protocol version 2 only)]' \
- '-p+[specify port on remote host]:port number on remote host' \
+ '-O[control active connection multiplexing master process]:multiplex control command:((
+ check\:"check that the master process is running"
+ forward\:"request forwardings without command execution"
+ cancel\:"cancel forwardings"
+ exit\:"request the master to exit"
+ stop\:"request the master to stop accepting further multiplexing requests"))' \
'-P[use non privileged port]' \
+ '-p+[specify port on remote host]:port number on remote host' \
'(-v)*-q[quiet operation]' \
+ '*-R[specify remote port forwarding]:remote port forwarding:->forward' \
+ '-S+[specify location of control socket for connection sharing]:path to control socket:_files' \
'(-1)-s[invoke subsystem]' \
- '(-T)-t[force pseudo-tty allocation]' \
'(-1 -t)-T[disable pseudo-tty allocation (protocol version 2 only)]' \
- '(-q)*-v[verbose mode]' \
+ '(-T)-t[force pseudo-tty allocation]' \
'-V[show version number]' \
- '(-X -Y)-x[disable X11 forwarding]' \
+ '(-q)*-v[verbose mode]' \
+ '(-N)-W[forward standard input/output over host:port (protocol version 2 only)]:host\:port' \
+ '-w[request tunnel device forwarding with the specified tun devices]:local_tun[\:remote_tun]' \
'(-x -Y)-X[enable (untrusted) X11 forwarding]' \
+ '(-X -Y)-x[disable X11 forwarding]' \
'(-x -X)-Y[enable trusted X11 forwarding]' \
- '-M[master mode for connection sharing]' \
- '-S+:path to control socket:_files' \
- '-O:multiplex control command:(check exit forward stop)' \
- '*-L[specify local port forwarding]:local port forwarding:->forward' \
- '*-R[specify remote port forwarding]:remote port forwarding:->forward' \
+ '-y[send log information using the syslog module]' \
':remote host name:->userhost' \
'*::args:->command' "$common[@]" && ret=0
;;
scp)
_arguments -C -s \
- '-p[preserve modification times]' \
- '-r[recursively copy directories]' \
- '-v[verbose mode]' \
- '-B[batch mode]' \
- '-q[disables the progress meter]' \
- '-P+[specify port on remote host]:port number on remote host' \
- '-S+[specify ssh program]:path to ssh:_command_names -e' \
- '*:file:->file' "$common[@]" && ret=0
+ '-3[copy through local host, not directly between the remote hosts]' \
+ '-B[batch mode (don'"'"'t ask for passphrases)]' \
+ '*:file:->file' "$common[@]" "$common_transfer[@]" && ret=0
;;
ssh-add)
_arguments -s \
- '-l[list all identities]' \
- '-L[lists public key parameters of all identities in the agent]'\
- '-d[remove identity]' \
+ '-c[identity is subject to confirmation via SSH_ASKPASS]' \
'-D[delete all identities]' \
- '-p[read passphrase from stdin]' \
+ '-d[remove identity]' \
+ '-e[remove keys provided by the PKCS#11 shared library]:library:' \
+ '-k[load plain private keys only and skip certificates]' \
+ '-L[lists public key parameters of all identities in the agent]'\
+ '-l[list all identities]' \
+ '-s[add keys provided by the PKCS#11 shared library]:library:' \
+ '-t[set maximum lifetime for identity]:maximum lifetime (in seconds or time format):' \
+ '-X[unlock the agent]' \
+ '-x[lock the agent with a password]' \
'*:SSH identity file:_files'
return
;;
ssh-agent)
_arguments -s \
- '(*)-k[kill agent automatically]' \
- '(-c)-s[force sh-style shell]' \
- '(-s)-c[force csh-style shell]' \
+ '(-k)-a[UNIX-domain socket to bind agent to]:UNIX-domain socket:_files' \
+ '(-k -s)-c[force csh-style shell]' \
'(-k)-d[debug mode]' \
+ '-k[kill current agent]' \
+ '(-k -c)-s[force sh-style shell]' \
+ '-t[set default maximum lifetime for identities]:maximum lifetime (in seconds or time format):' \
'*::command: _normal'
return
;;
@@ -137,16 +164,12 @@ _ssh () {
;;
sftp)
_arguments -C -s \
- '-C[compress data]' \
- '-F+[specify alternate config file]:config file:_files' \
- '(-1)-s[invoke subsystem]' \
- '-S+[specify program]:program:_command_names -e' \
- '-B+[specify buffer size]:buffer size' \
+ '-B+[specify buffer size]:buffer size in bytes (default\: 32768):' \
'-b+[specify batch file to read]:batch file:_files' \
- '*-v[verbose mode]' \
- '-1[forces ssh to try protocol version 1 only]' \
- '*-o+[specify extra options]:option string:->option' \
- '1:file:->rfile' '*:file:->file' && ret=0
+ '-D[connect directly to a local sftp server]:sftp server path:' \
+ '-R[specify number of outstanding requests]:number of requests (default\: 64):' \
+ '-s[SSH2 subsystem or path to sftp server on the remote host]' \
+ '1:file:->rfile' '*:file:->file' "$common[@]" "$common_transfer[@]" && ret=0
;;
esac
@@ -163,22 +186,36 @@ _ssh () {
;;
*(#i)ciphers*)
_values -s , 'encryption cipher' \
- 'aes128-cbc' \
'3des-cbc' \
- 'blowfish-cbc' \
- 'cast128-cbc' \
- 'arcfour' \
+ 'aes128-cbc' \
'aes192-cbc' \
'aes256-cbc' \
+ 'aes128-ctr' \
+ 'aes192-ctr' \
+ 'aes256-ctr' \
+ 'arcfour128' \
+ 'arcfour256' \
+ 'arcfour' \
+ 'blowfish-cbc' \
+ 'cast128-cbc' \
+ \
'rijndael128-cbc' \
'rijndael192-cbc' \
'rijndael256-cbc' \
- 'rijndael-cbc@lysator.liu.se' && ret=0
+ 'rijndael-cbc@lysator.liu.se' \
+ && ret=0
;;
*(#i)cipher*)
- _wanted values expl 'encryption cipher' \
- compadd idea des 3des blowfish arcfour tss none && ret=0
+ _wanted values expl 'encryption cipher (protocol version 1)' \
+ compadd blowfish 3des des idea arcfour tss none && ret=0
;;
+ *(#i)controlmaster*)
+ _wanted values expl 'truthish value' compadd yes no auto autoask && ret=0
+ ;;
+ *(#i)controlpath*)
+ _description files expl 'path to control socket'
+ _files "$expl[@]" && ret=0
+ ;;
*(#i)globalknownhostsfile*)
_description files expl 'global file with known hosts'
_files "$expl[@]" && ret=0
@@ -193,6 +230,10 @@ _ssh () {
*(#i)(local|remote)forward*)
state=forward
;;
+ *(#i)preferredauthentications*)
+ _values -s , 'authentication method' gssapi-with-mic \
+ hostbased publickey keyboard-interactive password && ret=0
+ ;;
*(#i)protocol*)
_values -s , 'protocol version' \
'1' \
@@ -218,44 +259,95 @@ _ssh () {
_description files expl 'xauth program'
_files "$expl[@]" -g '*(-*)' && ret=0
;;
- *(#i)controlmaster*)
- _wanted values expl 'truthish value' compadd yes no auto autoask && ret=0
- ;;
- *(#i)controlpath*)
- _description files expl 'path to control socket'
- _files "$expl[@]" && ret=0
- ;;
- *(#i)preferredauthentications*)
- _values -s , 'authentication method' gssapi-with-mic \
- hostbased publickey keyboard-interactive password && ret=0
esac
else
+ # old options are after the empty "\"-line
_wanted values expl 'configure file option' \
compadd -M 'm:{a-z}={A-Z}' -qS '=' - \
- AddressFamily \
- AFSTokenPassing BatchMode BindAddress \
- ChallengeResponseAuthentication CheckHostIP \
- Cipher Ciphers ClearAllForwardings Compression \
- CompressionLevel ConnectionAttempts ConnectTimeout \
- ControlMaster ControlPath \
- DynamicForward EnableSSHKeysign \
- EscapeChar FallBackToRsh ForwardAgent ForwardX11 \
- ForwardX11Trusted \
- GatewayPorts GlobalKnownHostsFile GSSAPIAuthentication \
- GSSAPIDelegateCredentials HostbasedAuthentication \
- HostKeyAlgorithms HostKeyAlias HostName IdentityFile \
- IdentitiesOnly KbdInteractiveDevices \
- KeepAlive KerberosAuthentication KerberosTgtPassing \
- LocalForward LogLevel MACs NoHostAuthenticationForLocalhost \
- NumberOfPasswordPrompts PreferredAuthentications \
- PasswordAuthentication Port Protocol ProtocolKeepAlives \
- ProxyCommand PubkeyAuthentication RemoteForward \
- RhostsAuthentication RhostsRSAAuthentication \
- RSAAuthentication ServerAliveInterval ServerAliveCountMax \
- SetupTimeOut SmartcardDevice StrictHostKeyChecking \
- TCPKeepAlive \
- UsePrivilegedPort User UserKnownHostsFile UseRsh \
- VerifyHostKeyDNS XAuthLocation && ret=0
+ AddressFamily \
+ BatchMode \
+ BindAddress \
+ ChallengeResponseAuthentication \
+ CheckHostIP \
+ Cipher \
+ Ciphers \
+ ClearAllForwardings \
+ Compression \
+ CompressionLevel \
+ ConnectionAttempts \
+ ConnectTimeout \
+ ControlMaster \
+ ControlPath \
+ ControlPersist \
+ DynamicForward \
+ EnableSSHKeysign \
+ EscapeChar \
+ ExitOnForwardFailure \
+ ForwardAgent \
+ ForwardX11 \
+ ForwardX11Timeout \
+ ForwardX11Trusted \
+ GatewayPorts \
+ GlobalKnownHostsFile \
+ GSSAPIAuthentication \
+ GSSAPIDelegateCredentials \
+ HashKnownHosts \
+ Host \
+ HostbasedAuthentication \
+ HostKeyAlgorithms \
+ HostKeyAlias \
+ HostName \
+ IdentitiesOnly \
+ IdentityFile \
+ IPQoS \
+ KbdInteractiveAuthentication \
+ KbdInteractiveDevices \
+ KexAlgorithms \
+ LocalCommand \
+ LocalForward \
+ LogLevel \
+ MACs \
+ NoHostAuthenticationForLocalhost \
+ NumberOfPasswordPrompts \
+ PasswordAuthentication \
+ PermitLocalCommand \
+ PKCS11Provider \
+ Port \
+ PreferredAuthentications \
+ Protocol \
+ ProxyCommand \
+ PubkeyAuthentication \
+ RekeyLimit \
+ RemoteForward \
+ RequestTTY \
+ RhostsRSAAuthentication \
+ RSAAuthentication \
+ SendEnv \
+ ServerAliveCountMax \
+ ServerAliveInterval \
+ StrictHostKeyChecking \
+ TCPKeepAlive \
+ Tunnel \
+ TunnelDevice \
+ UsePrivilegedPort \
+ User \
+ UserKnownHostsFile \
+ VerifyHostKeyDNS \
+ VisualHostKey \
+ XAuthLocation \
+ \
+ AFSTokenPassing \
+ FallBackToRsh \
+ KeepAlive \
+ KerberosAuthentication \
+ KerberosTgtPassing \
+ PreferredAuthentications \
+ ProtocolKeepAlives \
+ RhostsAuthentication \
+ SetupTimeOut \
+ SmartcardDevice \
+ UseRsh \
+ && ret=0
fi
;;
forward)
--
1.7.7.2
--
+ privacy is necessary
+ using gnupg http://gnupg.org
+ public key id: 0x92FEFDB7E44C32F9
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-11-05 21:36 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-11-05 21:30 PATCH: Completion/Unix/Command/_ssh: Update (mostly) for 5.9 Simon Ruderich
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).